EventTarget は、イベントを受け取り、そのためのリスナーを持つ可能性があるオブジェクトにより実装されたインターフェースです。

Element および documentwindow は、最も一般的なイベントターゲットですが、他のオブジェクトもイベントターゲットになります。例えば、XMLHttpRequestAudioNodeAudioContext 他。

多くのイベントターゲット (要素、document、window を含む) も、on... プロパティや属性を経由した イベントハンドラ の設定をサポートしています。

メソッド

EventTarget.addEventListener()
EventTarget 上に特定のイベント種別のイベントハンドラを登録します。
EventTarget.removeEventListener()
EventTarget からイベントリスナーを削除します。
EventTarget.dispatchEvent()
この EventTarget にイベントを送出します。

Mozilla chrome コード向けの追加メソッド

on* プロパティを実装するために JavaScript で実装されたイベントターゲットを使用するための Mozilla 拡張があります。WebIDL バインディング も参照してください。

  • void setEventHandler(DOMString type, EventHandler handler)
  • EventHandler getEventHandler(DOMString type)

EventTarget の簡易実装

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 this.removeEventListener(type, callback);
    }
  }
};

EventTarget.prototype.dispatchEvent = function(event) {
  if(!(event.type in this.listeners)) {
    return;
  }
  var stack = this.listeners[event.type];
  event.target = this;
  for(var i = 0, l = stack.length; i < l; i++) {
      stack[i].call(this, event);
  }
};

仕様

仕様書 策定状況 備考
DOM
EventTarget の定義
現行の標準 変更なし。
Document Object Model (DOM) Level 3 Events Specification
EventTarget の定義
廃止された いくつかの引数は任意 (listener)、または null 値を許可 (useCapture)。
Document Object Model (DOM) Level 2 Events Specification
EventTarget の定義
廃止された 初期定義。

ブラウザの実装状況

We're converting our compatibility data into a machine-readable JSON format. This compatibility table still uses the old format, because we haven't yet converted the data it contains. Find out how you can help!

機能 Chrome Firefox (Gecko) Internet Explorer Opera Safari (WebKit)
基本サポート 1.0 1.0 (1.7 or earlier) 9.0 7 1.0[1]
機能 Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
基本サポート 1.0 1.0 (1) 9.0 6.0 1.0

[1] window.EventTarget does not exist.

関連情報

ドキュメントのタグと貢献者

このページの貢献者: Marsf, mikamikuh, fscholz
最終更新者: Marsf,