我在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
还是有更安全的(跨浏览器)解决方案?
==== edit ====
我发现了一个错误,它来自新的CKEDITOR.dom.range
TypeError: b is undefined
这意味着编辑器。文档是空的,但是当我在编辑器中查看。文件填好了吗?
当我试图在错误后第二次设置范围时,它还显示以下错误:未捕获异常:DOMException: INVALID_STATE_ERR
试试这个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>
你们还有其他病例吗?