2

我在 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

类型错误:b 未定义

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

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

4

1 回答 1

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>

你还有其他情况吗?

于 2013-03-07T11:02:49.257 回答