1

我有一个内联可编辑的 div。我可以输入、删除、添加。效果很好。我希望在焦点上选择他 div 中的文本(或者如果您单击它)。所以我在代码中添加了以下内容

var editor = CKEDITOR.instances.div#{attr};
var element = editor.document.getById('div#{attr}');
editor.getSelection().selectElement( element );

这也有效。全选对焦。但是,如果我按删除键或任何其他字符键来覆盖以编程方式选择的文本,它不会改变。就好像不仅仅是选择了文本,浏览器也不让我删除它。如果我手动选择文本,它可以工作。

4

1 回答 1

1

selection#selectElement方法将在传递元素之前开始选择并在其之后结束。这意味着不仅会选择可编辑的内容,还会选择其外部内容的不可编辑部分,因此选择可能不可编辑。

这是一个正确的解决方案:

var editor = CKEDITOR.instances.editable,
    el = CKEDITOR.document.getById( 'editable' ),
    range = editor.createRange();

editor.focus();
range.selectNodeContents( el );
range.select();

但最简单的解决方案是使用selectAllselectall 插件中定义的命令:

editor.execCommand( 'selectAll' );
于 2013-09-09T06:35:04.567 回答