У меня проблемы с разработкой плагинов CKEditor, которые вставляют нередактируемое содержимое в поток текста.Я пытался использовать функции диапазона, но с небольшим успехом, поскольку документация менее звездная.Итак, учитывая некоторый текст, допустим, что плагин вставляет «[[не редактируемый материал]]», а затем при отображении WYSIWYG оборачивает его в промежуток, поэтому его можно стилизовать в цвет:
<p>This is some text[[uneditable stuff here]]</p>
При первой вставке недоступного для редактирования материала мы хотим, чтобы пользователь затем мог продолжать вводить или нажимать клавишу Enter для новой строки.Следующий код (который я получил здесь: Как установить позицию курсора в конец текста в 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?Я знаю, я не знаю!
Начинаю думать, что просто использовать editor.insertElement - это неправильно, и я должен узнать о функциях FakeElement (insertBogus?), Которых я не понимаю, еще.Штатные плагины для ссылок и изображений, похоже, не имеют этой проблемы.