У меня возникли проблемы с разработкой плагинов CKEditor, которые вставляют неизменяемое содержимое в текстовый поток. Я пытался использовать функции диапазона, но с небольшим успехом, поскольку документация меньше звездной. Таким образом, учитывая некоторый текст, позволяет сказать, что плагин вставляет «[[нередактируемы материал]]», а затем на дисплее WYSIWYG обертывания, что в промежутке, так что может быть стилизованной в цвете:Позиция курсора CKEditor после вставки неотредактируемого элемента
<p>This is some text[[uneditable stuff here]]</p>
При первой вставки неотредактированный материал, мы хотим, чтобы пользователь смог продолжить ввод или нажатие Enter для новой строки. Следующий код (который я получил здесь: How to set cursor position to end of text in CKEditor?) работает в Firefox, но (естественно) не в IE9, 8 или 7:
var s = editor.getSelection();
editor.insertElement(e); // element 'e'= a span created earlier
var p = e.getParent();
s.selectElement(p);
var selected_ranges = s.getRanges();
selected_ranges[0].collapse(false); // false = to the end of the selected node
s.selectRanges(selected_ranges); // putting the current selection there
Так что я хочу, чтобы это произошло, что курсор переходит в положение «^» :
<p>This is some text<span>[[uneditable stuff here]]</span>^</p>
Если новый элемент не в конце строки, то после его создания, курсор должен идти сюда:
<p>This is some text<span>[[uneditable stuff here]]</span>^ with more text after the new element</p>
В FF я могу получить курсор в конце строки, но не в позиции после нового элемента. В IE курсор все еще находится внутри нового SPAN, который я вижу при вводе, и он все еще находится в цвете css диапазона, и при переключении на представление SOURCE текст ушел (потому что это неизменный диапазон).
Я знаю, что существует метод range.setStartAfter, но полностью не смог заставить его работать даже в FF/Chrome.
Есть ли у кого-нибудь действительно хорошая ручка в использовании методов выбора диапазона и выбора в CKEditor? Я знаю I не надо!
Считается, что использование редактора.inertElement неверно, и я должен узнать о функциях FakeElement (insertBogus?), Которые я пока не понимаю. Плагины для акций, такие как ссылки и изображения, похоже, не имеют этой проблемы.
Я сейчас пытаюсь решить эту проблему. Были ли у вас какие-то успехи с тех пор, как вы отправили? – coyotesqrl