Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript CKEditor:通过JS从内联编辑器转义编辑器焦点(无需单击鼠标)?_Javascript_Jquery_Ckeditor - Fatal编程技术网

Javascript CKEditor:通过JS从内联编辑器转义编辑器焦点(无需单击鼠标)?

Javascript CKEditor:通过JS从内联编辑器转义编辑器焦点(无需单击鼠标)?,javascript,jquery,ckeditor,Javascript,Jquery,Ckeditor,我正在开发一个记录笔记的应用程序,它用来公开动态创建的可编辑div。(我使用的是CKEditor版本4.5.8。) 使用内联编辑器时,您可以将鼠标从div上移开以离开编辑模式,这将导致以下行为更改: div周围的蓝色高光消失 闪烁的光标消失了 按键不再“键入”到div中(即,编辑器现在处于非活动状态) 但是我不知道如何避开编辑器焦点(即再现上述更改),而不要求用户实际单击鼠标。以下是我迄今为止所尝试的: 在内联可编辑元素上调用Jquery.blur():这会从视觉上移除焦点,并CKEDIT

我正在开发一个记录笔记的应用程序,它用来公开动态创建的可编辑div。(我使用的是CKEditor版本4.5.8。)

使用内联编辑器时,您可以将鼠标从div上移开以离开编辑模式,这将导致以下行为更改:

  • div周围的蓝色高光消失
  • 闪烁的光标消失了
  • 按键不再“键入”到div中(即,编辑器现在处于非活动状态)
但是我不知道如何避开编辑器焦点(即再现上述更改),而不要求用户实际单击鼠标。以下是我迄今为止所尝试的:

  • 在内联可编辑元素上调用Jquery
    .blur()
    :这会从视觉上移除焦点,并
    CKEDITOR.currentInstance
    变为
    null
    ;但是按键仍然会导致字符被添加到div中,从而重新激活焦点
  • 在内联可编辑元素上调用Jquery
    .removeClass('cke\u focus')
    ——没有可见效果
  • 调用Jquery
    。在页面上的其他元素上单击()
  • 调用了
    CKEDITOR.currentInstance.focusManager.blur()
    -无可见效果
  • 调用了
    CKEDITOR.currentInstance.container.fire('blur')
    -无可见效果
  • 调用了
    CKEDITOR.currentInstance.element.fire('blur')
    -无可见效果
  • 名为
    CKEDITOR.currentInstance.destroy()
    -由于
    contenteditable=“true”
    属性或类似的原因,编辑器似乎在销毁后自动重新初始化。无论如何,div会保持焦点并继续捕捉按键

我所要做的就是重新创建当你从一个内联编辑div中点击时发生的事情:焦点指示器消失,按键不再向div中添加文本。有什么办法可以做到吗?提前谢谢

诀窍是将模糊与删除当前所有选择范围相结合:

CKEDITOR.instances.editor1.on( 'contentDom', function() {
    CKEDITOR.instances.editor1.document.on('keydown', function(event) {  
        if (event.data.getKey() == 27) {
            $(CKEDITOR.currentInstance.element.$).blur();
            window.getSelection().removeAllRanges();
        }
    });
});
还有一个工作示例:

你检查答案了吗?谢谢@Dekel,没有,我还没有检查你的答案,因为你在我的时间半夜发了帖子。但如果答案对我有用,我会投票并接受,所以不必担心我忘记了你的答案。当然:)没问题,只是想确保你收到通知。谢谢