2016-11-21 11 views
0

Я использую response-rte, но я готов его расширить, поэтому давайте поговорим о Draft-js.Draft.js получить выделение или диапазон для уже стилизованных элементов

Мне нужно иметь возможность «встроенного стиля» выбора. Затем на последующих визуализаторах будет повторно доступ к этому элементу выбора.

Итак, допустим, я выделил выделение. Затем я сохраняю документ. Затем я возвращаюсь, перезагружаю документ, мне нужно иметь доступ к этому выделенному разделу, но в dom.

В основном на стороне документа я применяю маркеры, за пределами чертежа-js, и эти маркеры должны выстраиваться в линию с выделенной частью. Поэтому, когда я делаю начальную подсветку, я могу получить позицию dom из window.getSelection(), и я могу разместить маркер. Но dom может измениться позже, и я не смогу разместить маркер.

--edit--

Так что другой случай использования является то, что я выделяю выбор, и даже в одной и той же сессии, мне нужно изменить цвет выбора программно так же мне нужно, чтобы получить доступ к разделу документ, даже если курсор не находится в этом разделе.

--end edit--

Так что мне действительно нужно что-то вроде уникального Classname, ид или даже Чем лучше реагировать исх для новых пролетов, которые создаются, когда вы делаете встроенный стиль.

Пожалуйста, дайте мне знать, если вам нужно лучшее объяснение.

ответ

0

SelectionState записывает выбор, включая начальный блок, начальное смещение, конечный блок и смещение в конце. Это не проблема для сохранения выбора в вашем коде и последующего применения к редактору.

Так что мне действительно нужно что-то вроде уникального имени класса, id или даже лучше реагировать ref для новых пространств, которые создаются, когда вы выполняете встроенный стиль.

UPDATE

Вы можете найти block key, который ваш встроенный стилизованный текст принадлежит, в атрибуте data-offset-key={blockkey}-xx-xx узла. block key поможет вам найти узел с SelectionState.getStartKey()/getEndKey(). Затем найдите узел span на SelectionState.getStartOffset()/getEndOffset().

+0

Спасибо, я думаю, что я не понимаю, но на второй части вы можете объяснить, как я могу получить местоположение dom span от SelectionState? – Raif

+0

что вы имеете в виду местоположение? –

+0

Ну, мне нужен левый верхний или положение, жаль, что я не могу думать в css прямо сейчас, но мне нужно выровнять что-то с вершиной выбора вне редактора. Я могу сделать это, когда у меня есть window.getSelection() cuz, который сообщает мне верхнюю, левую, правую, нижнюю, но если я загружу страницу позже, то эти координаты могут перестать быть правильными, мне нужно пересчитать их. – Raif