Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/82.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 事件处理程序未拾取Keydown事件_Javascript_Jquery - Fatal编程技术网

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:顺便说一句,如果您可以调度一个事件来解决实际问题,那么几乎可以肯定的是,您应该只调用函数。