我在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
答案 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>
你还有其他案件吗?