EventTarget
是由可以接收事件且可以为事件提供监听器的对象实现的 DOM 接口。
元素
,
Document
,和
Window
是最常见的事件目标,但其它对象也可以是事件目标。例如
XMLHttpRequest
,
AudioNode
,
AudioContext
,等。
很多事件目标 (包括元素、文档及窗口) 还支持设置
事件处理程序
凭借
on
event
特性和属性。
<div id="interfaceDiagram" style="display: inline-block; position: relative; width: 100%; padding-bottom: 11.666666666666666%; vertical-align: middle; overflow: hidden;"><svg style="display: inline-block; position: absolute; top: 0; left: 0;" viewbox="-50 0 600 70" preserveAspectRatio="xMinYMin meet"><a xlink:href="../API/EventTarget.html" target="_top"><rect x="1" y="1" width="110" height="50" fill="#F4F7F8" stroke="#D4DDE4" stroke-width="2px" /><text x="56" y="30" font-size="12px" font-family="Consolas,Monaco,Andale Mono,monospace" fill="#4D4E53" text-anchor="middle" alignment-baseline="middle">EventTarget</text></a></svg></div>
a:hover text { fill: #0095DD; pointer-events: all;}
EventTarget()
EventTarget
对象实例。
EventTarget
.addEventListener()
EventTarget
.
EventTarget
.removeEventListener()
EventTarget
.
EventTarget
.dispatchEvent()
EventTarget
.
Mozilla 包括 2 个扩展,供由 JS 实现的事件目标用于实现
on
event
特性。
另请参阅 WebIDL 绑定 .
void
setEventHandler
(DOMString
type
, EventHandler
handler
)
EventHandler
getEventHandler
(DOMString
type
)
var EventTarget = function() {
this.listeners = {};
};
EventTarget.prototype.listeners = null;
EventTarget.prototype.addEventListener = function(type, callback) {
if (!(type in this.listeners)) {
this.listeners[type] = [];
}
this.listeners[type].push(callback);
};
EventTarget.prototype.removeEventListener = function(type, callback) {
if (!(type in this.listeners)) {
return;
}
var stack = this.listeners[type];
for (var i = 0, l = stack.length; i < l; i++) {
if (stack[i] === callback){
stack.splice(i, 1);
return;
}
}
};
EventTarget.prototype.dispatchEvent = function(event) {
if (!(event.type in this.listeners)) {
return true;
}
var stack = this.listeners[event.type].slice();
for (var i = 0, l = stack.length; i < l; i++) {
stack[i].call(this, event);
}
return !event.defaultPrevented;
};
| 规范 | 状态 | 注释 |
|---|---|---|
|
DOM
在该规范中的 EventTarget 定义。 |
实时标准 | 无变化。 |
|
DOM (文档对象模型) 3 级事件规范
在该规范中的 EventTarget 定义。 |
过时 |
一些参数现在是可选的 (
listener
),或接受
null
值 (
useCapture
).
|
|
DOM (文档对象模型) 2 级事件规范
在该规范中的 EventTarget 定义。 |
过时 | 初始定义。 |
| 桌面 | 移动 | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
EventTarget
|
Chrome 1 | Edge 12 | Firefox 1 | IE 6 | Opera 7 |
Safari
1
注意事项
|
WebView Android 1 | Chrome Android 18 | Firefox Android 4 | Opera Android 10.1 |
Safari iOS
1
注意事项
|
Samsung Internet Android 1.0 |
EventTarget()
构造函数
|
Chrome 64 | Edge ≤79 | Firefox 59 | IE 不支持 No | Opera 51 | Safari 不支持 No | WebView Android 64 | Chrome Android 64 | Firefox Android 59 | Opera Android 47 | Safari iOS 不支持 No | Samsung Internet Android 9.0 |
addEventListener
|
Chrome
1
注意事项
|
Edge 12 | Firefox 1 |
IE
9
|
Opera 7 | Safari 1 |
WebView Android
1
注意事项
|
Chrome Android
18
注意事项
|
Firefox Android 4 | Opera Android 10.1 | Safari iOS 1 |
Samsung Internet Android
1.0
注意事项
|
dispatchEvent
|
Chrome 4 | Edge 12 | Firefox 2 |
IE
9
|
Opera 9 | Safari 3.2 | WebView Android 4 | Chrome Android 18 | Firefox Android 4 | Opera Android 10.1 | Safari iOS 3 | Samsung Internet Android 1.0 |
removeEventListener
|
Chrome 1 | Edge 12 | Firefox 1 |
IE
9
|
Opera 7 | Safari 1 | WebView Android 1 | Chrome Android 18 | Firefox Android 4 | Opera Android 10.1 | Safari iOS 1 | Samsung Internet Android 1.0 |
完整支持
不支持
见实现注意事项。
使用非标名称。