Как выбрать текстовый диапазон в CKEDITOR программно?
Проблема:
У меня есть экземпляр CKEditor в моем JavaScript:
var editor = CKEDITOR.instances["id_corpo"];
и мне нужно вставить какой-то текст программно, а потом выбрать какой-нибудь текстовый диапазон.
Я уже вставил текст через
editor.insertHtml('<h1 id="myheader">This is a foobar header</h1>');
Но мне нужно выбрать (выделить) слово "foobar" программно через javascript, чтобы я мог использовать селен для разработки некоторых функциональных тестов с моими плагинами CKEditor.
ОБНОВЛЕНИЕ 1:
Я также попробовал что-то вроде
var selection = editor.getSelection();
var childs = editor.document.getElementsByTag("p");
selection.selectElement(childs);
Но не работает вообще!
Как я могу это сделать?
я думаю что
selection.selectRange()
мог бы сделать работу, но я не мог понять, как ее использовать. Там нет примеров там:(
4 ответа
Получить текущий выбор
var editor = CKEDITOR.instances["id_corpo"];
var sel = editor.getSelection();
Изменить выделение на текущий элемент
var element = sel.getStartElement();
sel.selectElement(element);
Переместите диапазон к тексту, который вы хотите выделить
var findString = 'foobar';
var ranges = editor.getSelection().getRanges();
var startIndex = element.getHtml().indexOf(findString);
if (startIndex != -1) {
ranges[0].setStart(element.getFirst(), startIndex);
ranges[0].setEnd(element.getFirst(), startIndex + findString.length);
sel.selectRanges([ranges[0]]);
}
Вы также можете сделать следующее:
получить текущий выбор
var selection = editor.getSelection();
var selectedElement = selection.getSelectedElement();
если ничего не выбрано, то создайте новый элемент paragraf
if (!selectedElement)
selectedElement = new CKEDITOR.dom.element('p');
Вставьте свой контент в элемент
selectedElement.setHtml(someHtml);
При необходимости вставьте свой элемент в DOM (он будет вставлен в текущую позицию)
editor.insertElement(selectedElement);
а затем просто выберите его
selection.selectElement(selectedElement);
Проверьте метод selectElement() в CKEDITOR.dom.selection.
http://docs.cksource.com/ckeditor_api/symbols/CKEDITOR.dom.selection.html
Вставить текст в точке курсора в редакторе ck
- function insertVar(myValue) {
CKEDITOR.instances['editor1'].fire( 'insertText',myValue);
}
это работает для меня