EventTarget

この記事は技術レビューを必要としています。ぜひご協力ください

この記事は編集レビューを必要としています。ぜひご協力ください

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

Elementdocument、そしてwindowは最も一般的なEventTargetの実装ですが、他のオブジェクトもEventTargetになることが可能です。例えば、XMLHttpRequestAudioNodeAudioContextなどのオブジェクトです。

多くのEventTarget(要素、ドキュメント、ウィンドウを含む)は、"on..."プロパティと属性を使ってイベントハンドラを設定できます。

関数

EventTarget.addEventListener()
EventTarget上に特定のイベント種別のイベントハンドラを登録する
EventTarget.removeEventListener()
EventTarget上からイベントリスナーを削除する
EventTarget.dispatchEvent()
EventTargetにイベントを移譲する

Mozilla chromeの為の追加の関数

on*プロパティを実装する為にJavaScriptで実装されたEventTargetを使う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);
    }
};


仕様

仕様 Status コメント
DOM
EventTarget の定義
現行の標準 変更なし。
Document Object Model (DOM) Level 3 Events Specification
EventTarget の定義
草案 いくつかのパラメータの利用は任意(リスナー)、またはnullを許可(useCapture)
Document Object Model (DOM) Level 2 Events Specification
EventTarget の定義
勧告 初期の定義

ブラウザの互換性

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

 

参照

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

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