CKEditor - Widget插件:如何将焦点设置为嵌套的可编辑窗口小部件?

时间:2014-06-10 14:53:42

标签: javascript google-chrome ckeditor

我在 CKEditor 4.4.0中使用可编辑小部件 我已经创建了一个带有一个可编辑元素的小部件,它可以正常工作。

但我希望用户可以在创建后立即编辑可编辑部分

我尝试过的事情:

获取窗口小部件可编辑,如果刚刚创建 - 在窗口小部件就绪事件上调用 .focus()方法此可编辑

widget.editables.content.focus();

我发现 - 只有在焦点调用被称为延迟时它才会起作用。

所以基本上它适用于除Chrome以外的所有浏览器

widget.editables.content.focus()调用焦点之后的所有浏览器中,实际上都放入了小部件的可编辑状态,因为widget.focusedEditable变量包含正确的值。

但在Chrome widget.focusedEditable变量中,即使在widget.editables.content.focus()调用后,变量也会保持为空。

1 个答案:

答案 0 :(得分:2)

没有样本很难说,但我会检查一件事 - 尝试在嵌套的可编辑中放置选择。您可以使用range#moveToElementEditablePosition在正确的位置设置范围位置,然后selection.selectRanges( [ range ] )

nestedEditable.focus();

var range = editor.createRange();
range.moveToElementEditablePosition( nestedEditable );
editor.getSelection().selectRanges( [ range ] );

聚焦可能还不够,因为焦点与选择的关系并不像看起来那么紧密。 Widget系统在包含选择时考虑嵌套的可编辑焦点。如果您想更密切地调试它,请参阅: