--- title: EventTarget slug: Web/API/EventTarget tags: - API - DOM - DOM Events - EventTarget - Interface translation_of: Web/API/EventTarget ---
{{ ApiRef("DOM Events") }}
EventTarget
は、イベントを受け取り、そのためのリスナーを持つ可能性があるオブジェクトにより実装されたインターフェースです。
{{domxref("Element")}} および {{domxref("document")}}、{{domxref("window")}} は、最も一般的なイベントターゲットですが、他のオブジェクトもイベントターゲットになります。例えば、{{domxref("XMLHttpRequest")}}、{{domxref("AudioNode")}}、{{domxref("AudioContext")}} 他。
多くのイベントターゲット (要素、document、window を含む) も、on...
プロパティや属性を経由した イベントハンドラ の設定をサポートしています。
{{InheritanceDiagram}}
EventTarget
オブジェクトのインスタンスを作成します。EventTarget
上に特定のイベント種別のイベントハンドラを登録します。EventTarget
からイベントリスナーを削除します。EventTarget
にイベントを送出します。on* プロパティを実装するために JavaScript で実装されたイベントターゲットを使用するための Mozilla 拡張があります。WebIDL バインディング も参照してください。
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; };
仕様書 | 策定状況 | 備考 |
---|---|---|
{{SpecName('DOM WHATWG', '#interface-eventtarget', 'EventTarget')}} | {{Spec2('DOM WHATWG')}} | 変更なし。 |
{{SpecName('DOM3 Events', 'DOM3-Events.html#interface-EventTarget', 'EventTarget')}} | {{Spec2('DOM3 Events')}} | いくつかの引数は任意 (listener )、または null 値を許可 (useCapture )。 |
{{SpecName('DOM2 Events', 'events.html#Events-EventTarget', 'EventTarget')}} | {{Spec2('DOM2 Events')}} | 初期定義。 |
{{Compat("api.EventTarget")}}