活动
侦听事件的旧方法是在元素上附加“on”命名事件。
一些事件:window.onload,element.onclick,document.onkeyup ....
您提供的参数是您要执行的功能。
window.onload=func
但在这种情况下,您只能传递一个函数(因此,如果您的文档中有多个 window.onload,则最后一个函数将始终覆盖前一个函数)
所以他们创建了 addEventListener (或在旧版本中,即 AttachEvent)
- 您创建的每个 Eventlistener 都会添加一个新的,因此不会覆盖以前的。
- 通过传递一个命名函数,您可以使用 removeEventListener 删除它们。
- 事件大多相同,但您不会在事件前面添加“on”。
window.addEventListener('load',func,false);
addEventListener 中的第一个参数是您要收听的事件。
第二个参数是您要执行的功能
第三个在@Yotam Omer 帖子中有很好的描述
当事件发生时,您的第二个参数(函数)将被执行并将有关事件的信息发送到该函数。
因此,如果您想获得每个事件的更多详细信息,您需要定义函数的第一个参数。
在这种情况下“事件”
var func=function(event){console.log(event)}
此功能记录您需要的有关事件的所有信息。
现在具体描述您的代码
这是一个包含键盘上按下(并按住)的键的对象。
var keysDown = {};
第一个事件处理程序侦听按键事件。所以如果你“keydown”内联创建的函数接收事件信息'e'。由于该事件是一个键盘事件,您还可以获得“keyCode”,这是您按下的键的数字表示。该函数本身仅将按下的键 keyCode 添加到先前创建的对象“keysDown”。
document.addEventListener("keydown", function (e) {
keysDown[e.keyCode] = true;
}, false);
第二个处理程序监听“keyup”事件。使用 keyCode 传递事件“e”信息。如果 keyCode 存在于对象“keysDown”中,它将被删除。
document.addEventListener("keyup", function (e) {
delete keysDown[e.keyCode];
}, false);
因此,在按下键盘时,“keysDown”对象始终准确地知道哪些键被按下。这对于多次按键(shift+ctrl+字母)等操作很有用,或者只是跟踪哪些键被按下。
您可以通过记录对象轻松测试结果。
document.addEventListener("keydown", function (e) {
keysDown[e.keyCode] = true;
console.log(keysDown)
}, false);