2011-04-21 86 views
3

如何将插入符号放置在CKEditor3.x中? 我有2个职位,我想在两个职位上使用insertHTML()。CKEditor:设置光标/插入符号位置

伪代码:

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);

这是行不通的。有人可以帮我吗?

回答

3

要在编辑器中插入文本或使用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 
+2

如果在插入之前保存一个范围并且希望光标在插入元素之后被定位,则这不起作用。它将光标放在插入的元素之前。仍然没有找到如何将光标放在插入元素之后。正常的行为是游标是INSIDE插入的元素,这对某些用例(我的!)不起作用。 – eon 2012-01-11 18:55:34

+0

我看到有一个名为'getSelectedElement()'的函数(参见http://docs.ckeditor.com/#!/api/CKEDITOR.dom.selection-method-getSelectedElement),它应该返回一个'CKEDITOR.dom .element'具有方法'focusNext'(见http://docs.ckeditor.com/#!/api/CKEDITOR.dom.element-method-focusNext),它应该将焦点移动到下一个元素。但我只是不能得到它的工作=/ 也许有人可以挖掘到这个方向.. – s3v3n 2013-07-05 14:17:44

1

如果您使用的,而不是插入HTML insertElement(和说,插入一个span元素)以下的可能应该工作:

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