Как выбрать текстовый диапазон в CKEDITOR программно? - PullRequest
6 голосов
/ 09 декабря 2010

Проблема:

У меня есть экземпляр 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 ]

8 голосов
/ 15 января 2013

Получить текущий выбор

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]]);
}
4 голосов
/ 02 апреля 2013

Вы также можете сделать следующее:

получить текущий выбор

var selection = editor.getSelection();
var selectedElement = selection.getSelectedElement();

если ничего не выбрано, создайте новый элемент параграфа

if (!selectedElement)
    selectedElement = new CKEDITOR.dom.element('p');

Вставьте свой контент в элемент

selectedElement.setHtml(someHtml);

При необходимости вставьте свой элемент в dom (он будет вставлен в текущую позицию)

editor.insertElement(selectedElement);

, а затем просто выберите его

selection.selectElement(selectedElement);
1 голос
/ 09 декабря 2010

Ознакомьтесь с методом selectElement () файла CKEDITOR.dom.selection.

http://docs.cksource.com/ckeditor_api/symbols/CKEDITOR.dom.selection.html

0 голосов
/ 18 апреля 2012

вставить текст в точке курсора в редакторе ck

  • функция insertVar (myValue) {CKEDITOR.instances ['editor1']. Fire ('insertText', myValue);}

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

...