CKEditor:设置光标/插入符号位置
问题描述:
如何将插入符号放置在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);
这是行不通的。有人可以帮我吗?
答
要在编辑器中插入文本或使用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
答
如果您使用的,而不是插入HTML insertElement(和说,插入一个span元素)以下的可能应该工作:
editor.insertElement(element);
var range = new CKEDITOR.dom.range(editor.document);
range.moveToElementEditablePosition(element, true);
editor.getSelection().selectRanges([range]);
如果在插入之前保存一个范围并且希望光标在插入元素之后被定位,则这不起作用。它将光标放在插入的元素之前。仍然没有找到如何将光标放在插入元素之后。正常的行为是游标是INSIDE插入的元素,这对某些用例(我的!)不起作用。 – eon 2012-01-11 18:55:34
我看到有一个名为'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