我在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");
}
}
如何让它适用于所有浏览器?我在这里做错了什么?
答案 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