key down listner事件在firefox中无效

时间:2015-10-23 11:33:23

标签: javascript firefox

我在javascript上有一个'keydown'事件,用于使用箭头键导航表:

我的代码如下:

document.onkeydown= function() { keyDown();};

实施代码如下:

function keyDown(e){
    var evt=(e)?e:(window.event)?window.event:null;
    var key = evt.keyCode || evt.which;

    if(key==38 || key==40){
     alert("working");
      }

}

如何让它适用于所有浏览器?我在这里做错了什么?

1 个答案:

答案 0 :(得分:1)

您需要将系统传入的event变量传递给您的函数或使用标准化的addEventListener方法:

// Passing the event
document.onkeydown = function(e) { keyDown(e); };
// Using event listeners
document.addEventListener('keydown', keyDown, false);

然后你应该依靠event传递 - 不要使用window.event - 如果event 传递给你的功能,那你就有更大的问题担心而不是发现事件。

function keyDown(e){
    if(e.which == 38 || e.which == 40){
       alert("working");
    }
}

我会了解有关addEventListener方法的更多信息,因为不建议为文档自己的onEvent属性分配函数。如果您想稍后更改,该怎么办?如果你想在某些时候添加一些代码怎么办?事件监听器非常适合,并且不会在此修改默认行为。您可以动态添加和删除它们,使其更加通用。请在此处阅读:https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener