3

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

これは機能していません。誰か助けてくれませんか?

4

2 に答える 2

3

エディターでテキストを挿入したり、htmlで何かをしたりするために、キャレットの位置を取得する必要はありません。

通常のhtmlとして扱います。

PS dom操作後にカーソル位置を復元したい場合は、これを試してください

var s = editor.getSelection();
var selected_ranges = s.getRanges(); // save selected range
// do something
s.selectRanges(selected_ranges); // restore it
于 2011-05-11T14:31:27.190 に答える
1

insert htmlの代わりにinsertElementを使用する場合(たとえば、span要素を挿入する場合)、おそらく次のように機能するはずです。

editor.insertElement(element);
var range = new CKEDITOR.dom.range(editor.document);
range.moveToElementEditablePosition(element, true);
editor.getSelection().selectRanges([range]);
于 2012-07-02T15:39:10.860 に答える