Получить позицию курсора в 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.