Javascript 检测CKEditor是否使用键控事件,或阻止其传播 简言之
在侦听本机事件时,是否有一种方法可以检测该事件在传播到侦听器之前是否被CKEditor以某种方式使用,或者阻止它传播 用例 我正在使用jQuery收听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
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.instances[0]。noEventPropagation=true
- 原始事件对象中的指示:
if(event.CKEditorWasHere){/*donothing*/}
- 提供我可以使用的功能的插件
- 最坏情况:在
事件中设置超时,我将使用它在短时间内抑制我自己的事件对话框hide