CKEditor: установить курсор / позицию каретки - PullRequest
3 голосов
/ 21 апреля 2011

Как я могу расположить каретку в CKEditor3.x? У меня есть 2 позиции, и я хочу использовать insertHTML () для обеих позиций.

Псевдо-код:

editor.setCaret(20); // function does not exists
editor.insertHtml('::');
editor.setCaret(40); // function does not exists
editor.insertHtml('::');

Я пытался (установить каретку в положение: 20):

var ranges = [];
var range = new CKEDITOR.dom.range( this.document );
range.startOffset = 20;
range.endOffset = 20;
ranges.push( range );
editor.getSelection().selectRanges( ranges );

Это не работает. Кто-нибудь может мне помочь, пожалуйста?

Ответы [ 2 ]

3 голосов
/ 11 мая 2011

Чтобы вставить текст или сделать что-то с html в редакторе, вам не нужно получать позицию каретки.

Рассматривайте это как обычный html.

P.S. Если вы, вероятно, хотите восстановить положение курсора после манипуляций с dom, попробуйте это

var s = editor.getSelection();
var selected_ranges = s.getRanges(); // save selected range
// do something
s.selectRanges(selected_ranges); // restore it
1 голос
/ 02 июля 2012

Если вы используете insertElement вместо insert html (и, скажем, вставьте элемент span), вероятно, должно работать следующее:

editor.insertElement(element);
var range = new CKEDITOR.dom.range(editor.document);
range.moveToElementEditablePosition(element, true);
editor.getSelection().selectRanges([range]);
...