2011-04-21 101 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]);