WorkerGlobalScope继承:EventTarget
EventTarget
EventTarget是一个由对象实现的接口,这些对象可以接收事件,并为它们提供侦听器。
Element,document和window是最常见的活动目标,但其他的对象也可以是事件目标,例如XMLHttpRequest,AudioNode,AudioContext,等等。
许多事件目标(包括元素,文档和窗口)也支持通过on...属性来设置事件处理程序。
构造部分
- EventTarget()
- 创建一个新的EventTarget对象实例。
方法
- EventTarget.addEventListener()
- 在EventTarget上注册特定事件类型的事件处理程序。
- EventTarget.removeEventListener()
- 从EventTarget中删除事件侦听器。
- EventTarget.dispatchEvent()
- 向此EventTarget调度事件。
Mozilla chrome代码部分的其他方法
由JS实现的事件目标使用Mozilla扩展来实现on*属性。
- void setEventHandler(DOMString类型,EventHandler处理程序)
- EventHandler getEventHandler(DOMString类型)
示例
EventTarget Section的简单实现
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”的定义。 |
Living Standard
|
没有改变 |
文档对象模型(DOM)级别3事件规范 该规范中“EventTarget”的定义。 |
已过时 | 一些参数现在是可选的(listener),或接受null值(useCapture)。 |
文档对象模型(DOM)级别2事件规范 该规范中“EventTarget”的定义。 |
已过时 | 初步定义。 |
浏览器兼容性部分
电脑端 | 移动端 | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
Chrome
|
Edge
|
Firefox
|
Internet Explorer
|
Opera
|
Safari
|
Android webview | Chrome for Android
|
Edge Mobile | Firefox for Android
|
Opera for Android
|
iOS Safari | |
基本支持 | 支持:1 | 支持 | 支持:1 | 支持:9 | 支持:7 | 支持:10.1 | 支持:1 | 支持:18 | 支持 | 支持:4 | 支持:7 | 支持:10.1 |
EventTarget() 构造函数 | 支持:64 | ? | 支持:59 | 不支持 | 支持:51 | 不支持 | 支持:64 | 支持:64 | ? | 支持:59 | 支持:51 | 不支持 |
addEventListener | 支持:1 |
支持:12 | 支持:1 | 支持:9 | 支持:7 | 支持:1 | 支持:1 |
支持:18 |
支持 | 支持:4 | 支持:7 | 支持:1 |
dispatchEvent | 支持:4 | 支持:12 | 支持:2 | 支持:9 | 支持:9 | 支持:3.2 | 支持:4 | 支持:18 | 支持 | 支持:4 | 支持 | 支持 |
removeEventListener | 支持:1 | 支持:12 | 支持:1 | 支持:9 | 支持:7 | 支持:1 | 支持:1 | 支持:18 | 支持 | 支持:4 | 支持:7 | 支持:1 |