EventTarget

対象 (DOM)

[9] DOMイベントにおける対象 (target) とは、 イベントディスパッチされたり、イベントリスナーが呼び出されたりする際の文脈として用いられるオブジェクトです。

仕様書

ディスパッチの対象

[22] イベント対象は、仕様上は、

disptch at target

fire at target

... のような表現で記述されます。

[23] dispatchEvent メソッドでは、文脈オブジェクト対象となります。

[24] 仕様書上のディスパッチには、対象上書き (target override) という引数があります >>25。 これが指定されていると、通常とは異なるオブジェクト対象になります。 現在これが用いられているのは、

... です。

[35] これらは Document ではなく Window発火されるわけですから、 Documentイベントリスナーは呼び出されず、 Windowイベントリスナーだけが呼び出されます。 更には、 本来なら event.targetevent.currentTargetWindow になるはずなのですが、 event.target はなぜか上書きされて Document になるのです。
[41] dispatch も参照。

Event インターフェイス target 属性 (DOM)

[13] Event インターフェイスtarget 属性は、イベント対象を返します。

[14] Event インターフェイスtarget IDL属性srcElement IDL属性取得器は、 次のようにしなければなりません >>3

  1. [65] 文脈オブジェクト対象を返します。

[63] イベントは、 対象 (target) を持ちます >>3。初期値は null です >>3

[64] ディスパッチの際に値がディスパッチ対象の EventTarget に設定されます。

Event インターフェイス currentTarget 属性 (DOM)

[15] Event インターフェイスcurrentTarget 属性は、イベントの現在の対象を返します。

[16] この属性の初期値は null です >>3イベントリスナーが呼び出される際に登録元の EventTarget に設定されます。

[17] がない EventTarget なら普通 targetcurrentTarget は一致しますが、DOM木中の節点など親子関係があると、 捕獲bubble が発生するので、等しくないことがあります。

EventTarget インターフェイス (DOM)

[11] DOMイベント対象となり得るオブジェクトは、すべて EventTarget インターフェイス継承しています。

[12] イベント鎖上の節点のすべてが EventTarget であることは DOM Standard 上明示的には要求されていないようですが、 Event インターフェイスcurrentTargetEventTarget 型となっているので、そうでなければ要件を満たせません。

コンストラクター

[44] EventTarget コンストラクターは、次のようにしなければなりません >>3

  1. [45] 新しい EventTarget を返します。

メンバー

[1] 次のメソッドが定義されています >>10

[7] 次の状態を持ちます。

イベントリスナーリスト
0個以上のイベントリスナーリストです。 イベントdispatchの際に使われます。
親の取得
dispatch におけるを取得する手順です。 EventTarget オブジェクトの種別ごとに定義されています。
活性化動作
遺物活性化前動作
遺物被取消活性化動作

イベントリスナーリスト

[8] 著者は、 EventTargetメソッドを通してイベントリスナーリストに含まれる個々のイベントリスナーを追加したり削除したりできます。

[33] イベントリスナーリストに対する演算は、イベントリスナーを参照。

EventTarget の一覧

[27] 次のインターフェイスEventTarget継承しています (直接継承しているもののみ)。

[46] 他に、 EventTarget コンストラクターで作成された素の EventTarget オブジェクトDOM Standard の改訂で追加されました。著者サブクラス化して任意の JavaScript オブジェクトに使うことが想定されています。

エラーの報告における対象

[18] エラーの報告においては、 error イベントディスパッチされるオブジェクト対象と呼ばれています。

[19] エラーの報告対象となるのは、大域オブジェクトのみです。

[20] エラーの報告対象には、エラー報告モードフラグがあります。

[21] 詳細は、エラーの報告の項を参照してください。

歴史

実装関係から継承関係へ

[4] DOM2DOM3 の頃は EventTarget は他のインターフェイス継承関係になく、 言語束縛依存のキャストによって取得できるとされていました。 JavaScript の場合は関係するオブジェクトEventTarget のメソッドも生えている形になっていました。 (実装上は Node などの親クラスとなっていたようです。)

[5] WebIDL の時代になって implements によって IDL 中にこれを記述できるようになりました。

[6] 更に DOM Standard により Node などが継承する親インターフェイスとして記述されるようになりました >>2

対象上書きの標準化

[37] on() / off() sketch. ( 版) https://gist.github.com/annevk/5238964

[38] Fix the incorrect side effects of dispatch' target override · whatwg/dom@b8a8eb2 ( 版) https://github.com/whatwg/dom/commit/b8a8eb272d1ff3c654b3c5ae690c990f1d0cd700

[40] Redesign fire an event and target override (annevk著, ) https://github.com/whatwg/dom/commit/e19d7eef74fb83792415a4a78ed866d28f4cc543

[42] Editorial: major cleanup around firing and dispatching events (annevk著, ) https://github.com/whatwg/html/commit/8ffbd146d4709057e45dd6cfc81e7a70897050c5

[43] Allow constructing and subclassing EventTarget (domenic著, ) https://github.com/whatwg/dom/commit/c4c1c8b47340a1e5ecc1a07670927b831f240586

[47] 16487 – EventTarget constructor () https://www.w3.org/Bugs/Public/show_bug.cgi?id=16487

[48] Make EventTarget subclassable · Issue #441 · whatwg/dom () https://github.com/whatwg/dom/issues/441

[49] Allow constructing and subclassing EventTarget by domenic · Pull Request #467 · whatwg/dom () https://github.com/whatwg/dom/pull/467

[50] Expose Event and EventTarget to AudioWorklet (hoch著, ) https://github.com/whatwg/dom/commit/601655d48abe3979200e42cefad60cdf0d752693

[51] [audioworklet] Ensure MessagePort is exposed in audio worklets · Issue #1266 · WebAudio/web-audio-api () https://github.com/WebAudio/web-audio-api/issues/1266

[52] Expose Event, EventTarget to AudioWorklet · Issue #515 · whatwg/dom () https://github.com/whatwg/dom/issues/515

[53] Fix 515: Expose Event, EventTarget to AudioWorklet by hoch · Pull Request #516 · whatwg/dom () https://github.com/whatwg/dom/pull/516

[54] Clear event's target and relatedTarget when dispatch ends at a shadow… (TakayoshiKochi著, ) https://github.com/whatwg/dom/commit/9ada239e14fe7964577276ef9d8972069e665247

[55] Event.target should return null after dispatch is complete, when stopped at ShadowRoot · Issue #511 · whatwg/dom () https://github.com/whatwg/dom/issues/511

[56] Set event.target to null when dispatching finishes at ShadowRoot by TakayoshiKochi · Pull Request #513 · whatwg/dom () https://github.com/whatwg/dom/pull/513

[57] Explain why OffscreenCanvas is an EventTarget (GloverDonovan著, ) https://github.com/whatwg/html/commit/eb2d54687d0e9fa9e9f70d107fc07663c17c73af

[58] Explain why OffscreenCanvas inherits EventTarget by GloverDonovan · Pull Request #3474 · whatwg/html () https://github.com/whatwg/html/pull/3474

[59] Editorial: add "add an event listener" hook (annevk著, ) https://github.com/whatwg/dom/commit/2bdabb15de8112d9783cf393a3d6c37911149f77

[61] Editorial: add "add an event listener" hook by annevk · Pull Request #596 · whatwg/dom () https://github.com/whatwg/dom/pull/596

[62] Editorial: create a concept for event's target (annevk著, ) https://github.com/whatwg/dom/commit/07c110c87b8e4b1f7ecae09727b859bb75b17a73

[66] Define a target concept that Event.target and Event.srcElement reflect · Issue #570 · whatwg/dom () https://github.com/whatwg/dom/issues/570

[67] Editorial: create a concept for event's target by annevk · Pull Request #621 · whatwg/dom () https://github.com/whatwg/dom/pull/621

[68] Define Event's srcElement and returnValue (miketaylr著, ) https://github.com/whatwg/dom/commit/e36b369a418663603e081d211dc844d197d97ecb

[34] Align with IDL constructor changes (autokagami著, ) https://github.com/whatwg/dom/commit/57512fac17cf2f1c4c85be4aec178c8086ee5ee4