At DOM https://dom.spec.whatwg.org/
callback interface EventListener {
void handleEvent(Event event);
};
描述于IDL指数 https://dom.spec.whatwg.org/#idl-index,链接到3.6.接口事件目标 https://dom.spec.whatwg.org/#interface-eventtarget,再次提到3.8.调度事件 https://dom.spec.whatwg.org/#dispatching-events
To 内部调用 https://dom.spec.whatwg.org/#concept-event-listener-inner-invoke一个带有事件的对象,运行以下步骤:致电
用户对象的操作 https://heycam.github.io/webidl/#call-a-user-objects-operation通过监听器的回调,“handleEvent
“, A
由事件和事件的 currentTarget 组成的参数列表
属性值作为回调this值。如果这引发了
异常,报告异常。
事件监听器可用于观察特定事件。
事件监听器由以下字段组成:
-
type(一个字符串)
-
callback(事件监听器)
-
capture(布尔值,最初为 false)
-
passive(布尔值,最初为 false)
-
once(布尔值,最初为 false)
-
removed(用于簿记目的的布尔值,最初为 false)
虽然回调是一个事件监听器 https://dom.spec.whatwg.org/#callbackdef-eventlistener,从
在上面的字段中,事件监听器是一个更广泛的概念。
其中引用回EventListener
对象在哪里handleEvent
是唯一命名的属性。
callback interface EventListener {
void handleEvent(Event event);
}
Web IDL https://heycam.github.io/webidl澄清
2.2.接口 https://heycam.github.io/webidl/#idl-interfaces
的定义EventListener
因为回调接口是
需要允许用户对象具有
给定属性(在本例中为“handleEvent
") 被视为
实现接口。对于新的 API 以及已有的 API
没有兼容性问题,使用回调函数将只允许
函数对象(在 ECMAScript 语言绑定中)。
callback interface https://heycam.github.io/webidl
回调接口是使用callback关键字的接口
其定义的开始。回调接口是可以
实施者用户对象 https://heycam.github.io/webidl/#idl-objects而不是通过平台对象,如
§2.10 对象实现接口中描述。
callback interface identifier {
/* interface_members... */
};
2.10.实现接口的对象 https://heycam.github.io/webidl/#idl-objects
用户对象 https://heycam.github.io/webidl/#dfn-user-object是作者将创建、实施的那些
Web API 用于调用的回调接口
作者定义的操作或发送和接收值到
作者通过操纵对象的属性来编写程序。在一个
网页,一个实现 EventListener 的 ECMAScript 对象
接口,用于注册 DOM 事件的回调
实现调用,将被视为用户对象。
请注意,用户对象只能实现回调接口
平台对象只能实现非回调接口。
例如
document.querySelector('#demo').addEventListener('click', {
abc: function (e) {
console.log(e)
}
}, false)
不将事件分派给abc
处理程序。尽管handleEvent
标识符确实调度事件。