WorkerGlobalScope繼承:EventTarget

2018-10-25 11:36 更新

EventTarget

EventTarget是一個由對象實現(xiàn)的接口,這些對象可以接收事件,并為它們提供偵聽器。

Element,document和window是最常見的活動目標,但其他的對象也可以是事件目標,例如XMLHttpRequest,AudioNode,AudioContext,等等。

許多事件目標(包括元素,文檔和窗口)也支持通過on...屬性來設(shè)置事件處理程序。

構(gòu)造部分

EventTarget()
創(chuàng)建一個新的EventTarget對象實例。

方法

EventTarget.addEventListener()
在EventTarget上注冊特定事件類型的事件處理程序。
EventTarget.removeEventListener()
從EventTarget中刪除事件偵聽器。
EventTarget.dispatchEvent()
向此EventTarget調(diào)度事件。

Mozilla chrome代碼部分的其他方法

由JS實現(xiàn)的事件目標使用Mozilla擴展來實現(xiàn)on*屬性。

  • void setEventHandler(DOMString類型,EventHandler處理程序)
  • EventHandler getEventHandler(DOMString類型)

示例

EventTarget Section的簡單實現(xiàn)

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;
};

規(guī)范

規(guī)范 狀態(tài) 注釋
DOM 
該規(guī)范中“EventTarget”的定義。
Living Standard
沒有改變
文檔對象模型(DOM)級別3事件規(guī)范 
該規(guī)范中“EventTarget”的定義。
已過時 一些參數(shù)現(xiàn)在是可選的(listener),或接受null值(useCapture)。
文檔對象模型(DOM)級別2事件規(guī)范 
該規(guī)范中“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() 構(gòu)造函數(shù) 支持: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
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號