Javascript 小部件插件:如何将焦点设置到小部件的嵌套编辑中?

Javascript 小部件插件:如何将焦点设置到小部件的嵌套编辑中?,javascript,google-chrome,ckeditor,Javascript,Google Chrome,Ckeditor,我正在使用CKEditor 4.4.0中的可编辑小部件 我已经创建了一个小部件,其中有一个可编辑的元素,它工作正常 但我想让用户能够在创建后立即编辑可编辑零件 我所尝试的: 使小部件可编辑,如果它刚刚创建-在小部件就绪事件上调用此可编辑的方法: widget.editables.content.focus(); 我发现,只有在defer中调用focus call时,它才会起作用 因此,基本上它在除Chrome之外的所有浏览器中都能工作 在所有浏览器中,widget.editables.cont

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

但我想让用户能够在创建后立即编辑可编辑零件

我所尝试的:

使小部件可编辑,如果它刚刚创建-在小部件就绪事件上调用此可编辑的方法

widget.editables.content.focus();
我发现,只有在defer
中调用focus call时,它才会起作用

因此,基本上它在除Chrome之外的所有浏览器中都能工作

在所有浏览器中,
widget.editables.content.focus()
之后调用的focus实际上被放在widget的editable中,因为
widget.focusedEditable
变量包含正确的值


但是在Chrome
widget.focusedEditable
中,即使调用了
widget.editables.content.focus()
,变量仍然保持为空。

如果没有示例,很难判断,但我会检查一件事-尝试将选择放置在嵌套的可编辑列表中。您可以使用在正确的位置设置范围位置,然后选择
。选择范围([range])

聚焦可能不够,因为聚焦与选择的关系不像看上去那么紧密。WIDGET系统在包含选择时考虑嵌套可编辑焦点。如果要更仔细地调试,请参阅:

  • -
    选择更改更新状态的侦听器
  • -一些测试作为我提出的解决方案的示例
nestedEditable.focus();

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