Javascript 按键关闭listner事件在firefox中不起作用

Javascript 按键关闭listner事件在firefox中不起作用,javascript,firefox,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("w

我在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");
      }

}
实施代码如下:

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");
      }

}

如何使它在所有浏览器上都工作?这里我做错了什么?

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

// Passing the event
document.onkeydown = function(e) { keyDown(e); };
// Using event listeners
document.addEventListener('keydown', keyDown, false);
然后,您应该依赖已传递的
事件
-不要使用
窗口。事件
-如果未将
事件
传递给您的函数,您需要担心的问题比查找事件更大

function keyDown(e){
    if(e.which == 38 || e.which == 40){
       alert("working");
    }
}
我将进一步了解
addEventListener
方法,因为不建议将函数分配给文档自己的
onEvent
属性。如果你以后想改变这个怎么办?如果您想在某些时候添加一些代码,该怎么办?事件监听器在这方面很好,并且它们不会在这里修改默认行为。您可以动态添加和删除这些,使其更加通用。请在此阅读: