CKEDITOR - 设置Caret结束

时间:2013-03-07 10:29:02

标签: dom ckeditor range selection

我在CKEDITOR中的定位工作很多。 但我仍然无法弄清楚为什么以下代码 有时不起作用?

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

我认为它与我提供的元素输入有关。 但我不确定。

有人知道moveToElementEditbalePosition有什么要求吗? 我最后一次检查输入是一个SPAN元素。

http://docs.ckeditor.com/#!/api/CKEDITOR.dom.range-method-moveToElementEditablePosition

或者是否有更安全的(跨浏览器)解决方案?

====编辑====

我发现了一个错误,它来自新的CKEDITOR.dom.range

TypeError:b未定义

这意味着editor.document是空的,但当我查看editor.document时它已被填充?

当我在错误之后第二次尝试设置范围时,它也显示以下错误:未捕获的异常:DOMException:INVALID_STATE_ERR

1 个答案:

答案 0 :(得分:3)

试试这个HTML:

<p><span id="test">Text</span></p>

这个JS:

var e = CKEDITOR.instances.editor1;
var span = e.document.getById( 'test' );
var range = e.createRange();

range.moveToElementEditablePosition( span, 1 );
range.select();
e.insertText( 'FOO' );

range.moveToElementEditablePosition( span );
range.select();
e.insertText( 'BAR' );

结果似乎是正确的:

<p><span>BARTextFOO</span></p>

你还有其他案件吗?