我有一个内联的可编辑div。我可以输入,删除,添加。效果很好。我希望在div中选择文本(或者如果你点击它)。所以我在代码中添加了以下内容
var editor = CKEDITOR.instances.div#{attr};
var element = editor.document.getById('div#{attr}');
editor.getSelection().selectElement( element );
这也有效。完全选择焦点。但是,如果我按删除键或任何其他字符键来覆盖以编程方式选择的文本,它不会更改。这就好像只选择了文本,浏览器不允许我删除它。如果我手动选择文本,它就可以工作。
答案 0 :(得分:1)
selection#selectElement
方法将在传递元素之前开始选择,并在它之后结束。这意味着不仅会选择可编辑的内容,还会选择不可编辑的内容部分,因此选择可能无法编辑。
这是一个正确的解决方案:
var editor = CKEDITOR.instances.editable,
el = CKEDITOR.document.getById( 'editable' ),
range = editor.createRange();
editor.focus();
range.selectNodeContents( el );
range.select();
但最简单的解决方案是使用selectall插件中定义的selectAll
命令:
editor.execCommand( 'selectAll' );