听者
发生指定类型的事件时接收通知(实现Event接口的对象)的对象。这必须是实现EventListener接口的对象,或者只是一个JavaScript函数。
它说我们可以使用an object that implements the Event interface
作为事件的监听者。
但我无法找到如何反对实现Event接口。我试过了:
document.querySelector('#demo').addEventListener('click', {
handleEvent: function (e) {
console.log(e)
}
}, false)

#demo {
height: 200px;
background: #ccc;
}

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<div id="demo"></div>
</body>
</html>
&#13;
这个可以正确处理点击事件。
也许你可以给我一些关于此的文件。
答案 0 :(得分:3)
callback interface EventListener {
void handleEvent(Event event);
};
在IDL Index处描述,其链接到3.6. Interface EventTarget,再次在3.8. Dispatching events
提及要inner invoke一个带有事件的对象,请执行以下步骤:Call a user object’s operation并使用侦听器的回调,“
handleEvent
”,a 由event和event的currentTarget组成的参数列表 属性值作为回调此值。如果这引发了 异常,报告异常。事件监听器可用于观察特定事件。
事件监听器由以下字段组成:
- 输入(一个字符串)
- 回调(一个EventListener)
- 捕获(布尔值,最初为假)
- 被动(布尔值,最初为假)
- 一次(布尔值,最初为假)
- 已删除(用于记账的布尔值,最初为假)
虽然回调是EventListener,但可以从中看到 上面的字段,事件监听器是一个更广泛的概念。
引用回EventListener
对象,其中handleEvent
是唯一的命名属性。
callback interface EventListener {
void handleEvent(Event event);
}
Web IDL澄清了
EventListener
作为回调接口的定义是 需要允许用户对象的现有API的示例 要考虑的给定属性(在这种情况下为“handleEvent
”) 实现界面。对于新的API,以及那些API 没有兼容性问题,使用回调函数只允许一个 函数对象(在ECMAScript语言绑定中)。
回调接口是一个使用callback关键字的接口 它定义的开始。回调接口可以是 由user objects实现,而不是由平台对象实现,如 在§2.10对象实现接口中描述。
callback interface identifier { /* interface_members... */ };
2.10. Objects implementing interfaces
User objects是作者创作,实施的 Web API用来调用的回调接口 作者定义的操作或发送和接收值 作者的程序通过操纵对象的属性。在一个 web页面,一个实现EventListener的ECMAScript对象 interface,用于注册DOM Events的回调 实现调用,将被视为用户对象。
请注意,用户对象只能实现回调接口和 平台对象只能实现非回调接口。
例如
document.querySelector('#demo').addEventListener('click', {
abc: function (e) {
console.log(e)
}
}, false)
不会将事件分派给abc
处理程序。虽然handleEvent
标识符会调度事件。