按键监听器事件在firefox中不起作用

key down listner event not working in firefox

本文关键字:firefox 不起作用 事件 监听器      更新时间:2023-09-26

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

我如何使它在所有浏览器上工作?我哪里做错了?

您需要将系统传递给您的函数的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