Javascript 事件处理程序未拾取Keydown事件
我试图弄明白为什么下面的方法不起作用 我正在设置一个Javascript 事件处理程序未拾取Keydown事件,javascript,jquery,Javascript,Jquery,我试图弄明白为什么下面的方法不起作用 我正在设置一个keydown事件处理程序,然后触发该事件。但是处理程序没有检测到它 如果有人能启发我 function onKeyDown(event) { alert('keydown'); } document.addEventListener('keydown', onKeyDown, false); var keydown = jQuery.Event('keydown', {which:38, keyCode:38}); $(docu
keydown
事件处理程序,然后触发该事件。但是处理程序没有检测到它
如果有人能启发我
function onKeyDown(event)
{
alert('keydown');
}
document.addEventListener('keydown', onKeyDown, false);
var keydown = jQuery.Event('keydown', {which:38, keyCode:38});
$(document).keydown();
$(document).trigger(keydown);
jshiddle:来自,重点添加:
附加了.on()或其快捷方式方法之一的任何事件处理程序
在相应事件发生时触发。他们可能被解雇
但是,可以使用.trigger()方法手动执行。对.trigger()的调用
执行处理程序的顺序与事件发生时的顺序相同
由用户自然触发
因此,如果您使用jQuery而不是纯javascript附加处理程序,它将按预期工作:
function onKeyDown(event)
{
alert('keydown');
}
$(document).on('keydown', onKeyDown); // <----
var keydown = jQuery.Event('keydown', {which:38, keyCode:38});
$(document).keydown();
$(document).trigger(keydown);
函数onKeyDown(事件)
{
警报(“按键关闭”);
}
$(文档).on('keydown',onKeyDown);// jQuery的触发器
。触发实际的DOM事件更为棘手,键盘事件模块仍然是一个工作草案:
var e = document.createEvent('KeyboardEvents');
e.initKeyboardEvent('keydown');
document.dispatchEvent(e);
initKeyboardEvent
的参数为on。Firefox使用
谢谢。我最终使用了这个解决方案并替换了普通的javascript代码。原因是要正确设置event.keyCode需要太多的调整和变通方法,而使用jQuery只是更简单的解决方案。@Vigrond:顺便说一句,如果您可以调度一个事件来解决实际问题,那么几乎可以肯定的是,您应该只调用函数。