Как выбрать текстовый диапазон в 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); }

    это работает для меня

Другие вопросы по тегам