Получить позицию курсора в CKEditor 4 в HTML редактируемого элемента
Я использую встроенный CKEditor для редактирования элементов на моей странице. Поэтому, когда я нажимаю на DIV с некоторым классом, CKEditor прикреплен к нему, и когда он теряет фокус, экземпляр редактора уничтожается. Мне нужно вставить HTML-элемент в этот DIV после уничтожения экземпляра CKEditor - до последней позиции курсора перед уничтожением экземпляра редактора. Поэтому мне нужно знать индекс курсора в HTML редактируемого элемента, так как он будет принят как обычный текст (для этого примера ниже будет 25). Я не требуется изменить исходные данные.
У меня есть HTML в моем DIV, как это:"some <span>text</span> wi|th <b>html</b> tags"
(где " | " - позиция курсора)
Я попытался получить диапазон и расширить его до начала редактируемого элемента:
var range = editor.getSelection().getRanges()[ 0 ];
range.collapse( true );
range.setStartAt( editor.editable(), CKEDITOR.POSITION_AFTER_START );
здесь range.endOffset
равно 3 (так же, как если бы я не расширял диапазон). Но даже если я суммирую смещения большего количества элементов, это не решит мою проблему, потому что она исключает HTML-теги.
1 ответов
вы не сможете использовать диапазоны, если хотите использовать их после уничтожения редактора, потому что при уничтожении редактор заменяет внутренний HTML редактируемого данными, и они не то же самое.
вместо этого вы должны создать маркер для выделения до того, как редактор будет уничтожен, и найти этот маркер в данных.
см. эту тему для идей, как этого достичь:сохранить положение курсора после перезагрузки страницы в С CKEditor.