Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/69.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是否使用键控事件,或阻止其传播 简言之_Javascript_Jquery_Events_Ckeditor - Fatal编程技术网

Javascript 检测CKEditor是否使用键控事件,或阻止其传播 简言之

Javascript 检测CKEditor是否使用键控事件,或阻止其传播 简言之,javascript,jquery,events,ckeditor,Javascript,Jquery,Events,Ckeditor,在侦听本机事件时,是否有一种方法可以检测该事件在传播到侦听器之前是否被CKEditor以某种方式使用,或者阻止它传播 用例 我正在使用jQuery收听keyup事件,以检测何时按下escape。此时,系统会提示用户是否要放弃更改,并且会销毁CKEditor实例,并将其元素从DOM中删除 $('body').on('keyup', function(e){ if(e.which==27){ CKEDITOR.instances.myDiv.destroy(); $('#myDi

在侦听本机事件时,是否有一种方法可以检测该事件在传播到侦听器之前是否被CKEditor以某种方式使用,或者阻止它传播

用例 我正在使用jQuery收听
keyup
事件,以检测何时按下escape。此时,系统会提示用户是否要放弃更改,并且会销毁CKEditor实例,并将其元素从DOM中删除

$('body').on('keyup', function(e){
  if(e.which==27){
    CKEDITOR.instances.myDiv.destroy();
    $('#myDiv').remove();
  }
});
这里的问题是,CKEditor允许用户使用escape键与某些UI元素交互。例如,关闭对话框窗口或下拉列表

因此,只有当CKEditor没有使用事件关闭自己的UI元素时,我的事件才应该执行其代码

企图 我试图通过收听
对话框show
对话框hide
事件来检测对话框窗口是否打开,因此我的操作应该被忽略。这不起作用有两个原因:

  • CKEditor首先处理事件,因此当事件传播到我的侦听器时,没有打开任何对话框窗口并执行我的代码
  • 即使它可以工作,也不会用于下拉列表,因为它们不会触发
    对话框*
    事件
思想 我对CKEditor的工作原理了解不够,无法想出解决方案,但我想我正在寻找以下方面的线索:

  • CKEditor中用于防止事件传播的设置:
    CKEditor.instances[0]。noEventPropagation=true
  • 原始事件对象中的指示:
    if(event.CKEditorWasHere){/*donothing*/}
  • 提供我可以使用的功能的插件
  • 最坏情况:在
    对话框hide
    事件中设置超时,我将使用它在短时间内抑制我自己的事件
所以 也许我完全忽略了什么。在我看来,这似乎是一个常见的问题,应该有一个简单的解决办法

谢谢你抽出时间