[102] [[DOMイベント]]の通知処理の実行のことを、 [DFN[[RUBYB[ディスパッチ]@en[dispatch]]]]といいます。

* 仕様書

[REFS[
- [1] [CITE@en-US[DOM Standard]] ([TIME[2013-04-26 20:00:45 +09:00]] 版) <http://dom.spec.whatwg.org/#interface-eventtarget>
-- [3] [CITE@en-US[DOM Standard]] ([TIME[2013-04-26 20:00:45 +09:00]] 版) <https://dom.spec.whatwg.org/#dom-eventtarget-dispatchevent>
- [22] '''[CITE@en[DOM Standard]] ([TIME[2015-11-20 19:44:48 +09:00]] 版) <https://dom.spec.whatwg.org/#concept-event-dispatch>'''
]REFS]

* [CODE(DOMi)@en[EventTarget]] インターフェイス [CODE(DOMm)@en[dispatchEvent]] メソッド

[23] [CODE(DOMi)@en[[[EventTarget]]]] [[インターフェイス]]の
[DFN[[CODE(DOMm)@en[[[dispatchEvent]]]]]] [[メソッド]] [SRC[>>3]]
は、[[イベント]]を[[dispatch]]するものです。

[24] この[[メソッド]]は、次のようにしなければ[['''なりません''']] [SRC[>>3]]。
[FIG(steps)[
= [25] [VAR[イベント]]を、必須の第1[[引数]]を [CODE(DOMi)@en[[[Event]]]] 
と解釈したものに設定します。
= [26] [VAR[イベント]]の[F[[[ディスパッチフラグ]]]]が設定されているか、
[VAR[イベント]]の[F[[[初期化フラグ]]]]が設定されていないなら、
== [27] [CODE(DOMe)@en[[[InvalidStateError]]]] [[例外]]を[[投げ]]て停止します。
= [28] [VAR[イベント]]の [F[[CODE(DOMa)@en[[[isTrusted]]]]]] を、
[[偽]]に設定します。
= [29] [VAR[イベント]]について[[ディスパッチ]]を実行し、
その結果を返します。
=- [30] この[[メソッド]]の返す値は、 [CODE(IDL)@en[[[boolean]]]] です。
]FIG]

;; [4] [[発火]]とは [CODE(DOMm)@en[[[isTrusted]]]] [[属性]]の扱いが違っています。

* ディスパッチ

[31] [DFN[[RUBYB[ディスパッチ]@en[dispatch]]]]は、
[[引数]][VAR[[RUBYB[[[イベント]]]@en[event]]]]、[VAR[[RUBYB[[[対象]]]@en[target]]]]、
[VAR[[RUBYB[遺物[[対象上書き]]フラグ]@en[legacy target override]] flag]]について、
次のようにしなければ[['''なりません''']] [SRC[>>22]]。

[FIG(steps)[
= [58] [DFN[[VAR[legacyOutputDidListenersThrowFlag]]]] を、[[偽]]に設定します。
= [32] [VAR[イベント]]の[F[[[ディスパッチフラグ]]]]を設定します。
= [33] ([VAR[イベント経路]]、[VAR[活性化対象]]) を、[VAR[イベント]]、[VAR[対象]]、[VAR[遺物対象上書きフラグ]]について[[イベント経路]]を構築した結果に設定します。
= [107] [VAR[イベント経路]]が[[空]]なら、
== [108] 結果を返し、ここで停止します。
[FIG(list members)[
: [[返し値]] : [[真]]
: [VAR[legacyOutputDidListenersThrowFlag]] : [VAR[legacyOutputDidListenersThrowFlag]]
]FIG]
= [109] [VAR[イベント]]の[F[経路][イベント経路]]を、[VAR[イベント経路]]に設定します。
= [35] [VAR[イベント]]の[F[相]]を、[CODE[[[CAPTURING_PHASE]]]] に設定します。
= [111] [VAR[活性化対象]]が [CODE[null]] 以外で、
[VAR[活性化対象]]の[F[遺物活性化前動作]]が [CODE[null]] 以外なら、
== [112] [VAR[活性化対象]]の[F[遺物活性化前動作]]を実行します。
= [36] [VAR[イベント経路]]上の各[VAR[項目]]について、最後から順に、
== [45] [VAR[項目]]の[F[対象]]と[F[現在対象]]が異なるなら、
=== [34] [VAR[イベント]]の[VAR[項目]]についての処理 (>>37) を
[VAR[legacyOutputDidListenersThrowFlag]] について実行します。
= [42] [VAR[イベント経路]]上の各[VAR[項目]]について、最初から順に、
== [39] [VAR[項目]]の[F[対象]]と[F[現在対象]]が異なるなら、
=== [41] [VAR[イベント]]の [F[[CODE(DOMa)@en[[[bubbles]]]]]] が[[真]]なら、
==== [43] [VAR[イベント]]の[F[相]]を、 [CODE[BUBBLING_PHASE]] に設定します。
==== [40] [VAR[イベント]]の[VAR[項目]]についての処理 (>>37) を
[VAR[legacyOutputDidListenersThrowFlag]] について実行します。
== [46] それ以外なら、
=== [69] [VAR[イベント]]の[F[相]]を、 [CODE[AT_TARGET]] に設定します。
=== [70] [VAR[イベント]]の[VAR[項目]]についての処理 (>>37) を
[VAR[legacyOutputDidListenersThrowFlag]] について実行します。
= [44] [VAR[イベント]]の欄を次の通り設定します。
[FIG(list members middle)[
: [F[ディスパッチフラグ]] : [[偽]]
: [F[伝播停止フラグ]]     : [[偽]]
: [F[即時伝播停止フラグ]] : [[偽]]
: [F[現在対象]]           : [CODE[null]]
: [F[相]]                 : [CODE[NONE][eventPhase]]
: [F[経路][イベント経路]] : [[空]]
]FIG]
= [128] [VAR[イベント]]の[F[対象][イベント対象]]の[F[根]]が[[影根]]の場合、
== [129] [VAR[イベント]]の[F[対象][イベント対象]]を、 [CODE[null]] に設定します。
== [130] [VAR[イベント]]の[F[関連対象]]を、 [CODE[null]] に設定します。
= [113] [VAR[活性化対象]]が [CODE[null]] 以外なら、
== [114] [VAR[イベント]]の[F[取り消しフラグ]]が[[偽]]なら、
=== [115] [VAR[活性化対象]]の[F[活性化動作]]を[VAR[イベント]]について実行します。
== [116] それ以外で、[VAR[活性化対象]]の[F[遺物被取消活性化動作]]が [CODE[null]] 以外なら、
=== [117] [VAR[活性化対象]]の[F[遺物被取消活性化動作]]を実行します。
= [47] 結果を返します。
[FIG(list members)[
: [[返し値]] : [VAR[イベント]]の[F[取り消しフラグ]]の[[否定]]
: [VAR[legacyOutputDidListenersThrowFlag]] : [VAR[legacyOutputDidListenersThrowFlag]]
]FIG]
]FIG]

[71] つまり、まず[[イベント]]の[[対象]]から[[祖先]]に向けた[[木]]上の[[オブジェクト]]のリストを取得してから、
その各[[オブジェクト]]について[[イベントリスナー]]を実行します。
[[イベントリスナー]]の実行は、[[祖先]]から[[対象]]に向かう[[捕獲]]と、
[[対象]]から[[祖先]]に向かう [[bubbles]] の2段階に分かれます。
[[イベントリスナー]]内で[[親子]]関係が操作されても、
[[イベント]]の処理には影響を与えません。

;; [[イベント親]]、[[相]]も参照。

[37] ここで、[VAR[イベント]]の[VAR[項目]]についての処理とは、
[VAR[legacyOutputDidListenersThrowFlag]] について次のようにすることをいいます ([DFN[[RUBYB[呼び出し]@en[invoke]]]]) [SRC[>>22]]。

[FIG(steps)[
= [73] [VAR[イベント]]の[F[対象][イベント対象]]を、
[VAR[項目]]の[F[対象][イベント経路]]に設定します。
= [38] [VAR[イベント]]の[F[伝播停止フラグ]]が設定されていれば、ここで停止します。
= [50] [VAR[イベント]]の[F[現在対象]]を、[VAR[項目]]の[F[現在対象][イベント経路]]に設定します。
= [98] [VAR[イベント]]の[F[関連対象]]を、[VAR[項目]]の[F[関連対象]]に設定します。
= [100] 
@@ [[retargeting steps]]
= [49] [VAR[リスナー群]]を、[VAR[項目]]の[F[対象][イベント対象]]の[F[イベントリスナー群]]の複製とします。
= [78] [VAR[発見]]を、
[VAR[リスナー群]]と[VAR[イベント]]に関して [[inner invoke]] を実行した結果に設定します。
= [81] [VAR[発見]]が[[偽]]なら、
== [82] [VAR[元のイベント型]]を、[VAR[イベント]]の[F[[CODE(DOMa)@en[[[type]]]]]]
に設定します。
== [85] [VAR[元のイベント型]]の[[遺物イベント型]]があれば、
=== [84] [VAR[イベント]]の [F[[CODE(DOMa)@en[[[type]]]]]] を、
[VAR[元のイベント型]]の[[遺物イベント型]]に設定します。
=== [86] [VAR[リスナー群]]と[VAR[イベント]]と
[VAR[legacyOutputDidListenersThrowFlag]] に関して [[inner invoke]] を実行します。
=== [83] [VAR[イベント]]の [F[[CODE(DOMa)@en[[[type]]]]]] を、
[VAR[元のイベント型]]に設定します。
]FIG]

[79] [VAR[リスナー群]]と[VAR[イベント]]と
[VAR[legacyOutputDidListenersThrowFlag]] に関する [DFN[[[inner invoke]]]]
は、次のようにします [SRC[>>22]]。

[FIG(steps)[
= [77] [VAR[発見]]を、[[偽]]に設定します。
= [51] [VAR[リスナー群]]の[[イベントリスナー]][VAR[リスナー]]について順に、
== [54] 
[FIG(list)[
- [52] [VAR[リスナー]]の[F[[[削除済みフラグ]]]]が設定されておらず、かつ
- [59] [VAR[イベント]]の [F[[CODE(DOMa)@en[[[type]]]]]]と[VAR[リスナー]]の[F[[[型]]]]が等しい
]FIG]
... なら、
=== [76] [VAR[発見]]を、[[真]]に設定します。
=== [60] 
[FIG(list)[
- [56] [VAR[イベント]]の [F[[CODE(DOMa)@en[[[eventPhase]]]]]]
が [CODE[[[CAPTURING_PHASE]]]] で[VAR[リスナー]]の[F[[[捕獲]]]]フラグが[[偽]]、または
- [55] [VAR[イベント]]の [F[[CODE(DOMa)@en[[[eventPhase]]]]]]
が [CODE[[[BUBBLING_PHASE]]]] で[VAR[リスナー]]の[F[[[捕獲]]]]フラグが[[真]]
]FIG]
... なら、
==== [93] [VAR[リスナー]]の[F[一度のみ]]フラグが設定されていれば、
===== [95] [VAR[リスナー]]を、
[VAR[イベント]]の [F[[CODE(DOMa)@en[currentTarget]]]] 
の[F[イベントリスナー群]]から削除します。
==== [140] 
[VAR[大域]]を、
[VAR[リスナー]]の[F[コールバック]]の[F[関連付けられたRealm]]の[F[大域オブジェクト]]に設定します。
==== [141] [VAR[現在イベント]]を、
[[未定義]]に設定します。
==== [142] 
[VAR[大域]]が [CODE[Window]] の場合、
===== [143] 
[VAR[現在イベント]]を、
[VAR[大域]]の[F[現在イベント]]に設定します。
===== [144] 
[VAR[組]]の [F[item-in-shadow-tree]] が[[偽]]の場合、
====== [145] 
[VAR[大域]]の[F[現在イベント]]を、
[VAR[イベント]]に設定します。
==== [65] [VAR[リスナー]]の[F[[[受動的]]]]フラグが設定されていれば、
===== [92] [VAR[イベント]]の[F[[[受動的リスナー内フラグ]]]]を設定します。
==== [57] [VAR[リスナー]]の[F[[[コールバック]]]]の
[F[[CODE(DOMm)@en[[[handleEvent]]]] [[メソッド]]]]を実行します。
[FIG(list members)[

: [[引数]] : ([VAR[イベント]])
: [[コールバック[CODE(JS)[this]]値]] : [VAR[イベント]]の [F[[CODE(DOMa)@en[[[currentTarget]]]]]]

]FIG]
前項で[[例外]]が[[投げ]]られたなら、
[VAR[legacyOutputDidListenersThrowFlag]] を[[真]]に設定し、[[例外を報告]]します。
==== [66] [VAR[イベント]]の[F[受動的リスナー内フラグ]]を消去します。
==== [146] 
[VAR[大域]]が [CODE[Window]] の場合、
===== [147] 
[VAR[大域]]の[F[現在イベント]]を、
[VAR[現在イベント]]に設定します。
==== [53] [VAR[イベント]]の[F[即時伝播停止フラグ]]が設定されていれば、
===== [89] [VAR[発見]]を返し、ここで停止します。
= [80] [VAR[発見]]を返します。
]FIG]

[61] この手続きより、
[CODE(DOMm)@en[[[addEventListener]]]] によって新たに[[イベントリスナー]]を追加しても、
その[[イベント]]の同じ [CODE(DOMa)@en[[[currentTarget]]]] の実行中は、
実行されません。
逆に [CODE(DOMm)@en[[[removeEventListener]]]] による[[イベントリスナー]]の削除は、
即時反映されます。

[62] [CODE(DOMm)@en[[[stopPropagation]]]] も、
その[[イベント]]の同じ [CODE(DOMa)@en[[[currentTarget]]]] の実行中は反映されません。
[CODE(DOMm)@en[[[stopImmediatePropagation]]]] は即時反映されます。

[125] 
[CITE[DOM Standard]] では明確に記述されていませんが、
[[走っているスクリプトの実行中断]]があった場合、
そこで [[dispatch]] も中断して、中断を表す[[例外]]を [[dispatch]]
の[[例外]]として[[再び投げ]]ることが期待されていると思われます。

;; [126] [[handle fetch]] や [[Install]] では、中断された場合に[[タスク]]の[VAR[捨てる処理]]を実行することになります。

-*-*-

[118] [[ディスパッチ]]は、[[発火]]や [CODE(DOMm)@en[dispatchEvent]] の他、
いろいろな場所から呼び出されます。

[122] [VAR[legacyOutputDidListenersThrowFlag]] は、 [[Indexed DB]]
で使われています。[[イベントリスナー]]が[[例外]]を[[投げ]]ると、
[[トランザクション]]は取り消されます。

* 結果

[9] [[ディスパッチ]]した[[イベント]]が[[キャンセル]]されるかどうかで、その後の動作が変わることがあります。

[10] [[ディスパッチ]]によって[[イベントリスナー]]が実行されたかどうかで、その後の動作が変わることがあります。

[EG[
[12] [[prompt to unload a document]] は、 [CODE(DOMe)@en[[[beforeunload]]]]
の[[イベントリスナー]]が実行されたかどうかで動作が変わります。
]EG]

[EG[
[13] [[unload a document]] は、 [CODE(DOMe)@en[[[unload]]]]
の[[イベントリスナー]]が実行されたかどうかで動作が変わります。
]EG]

* 関連

[5] [[イベント親]]も参照。

* 歴史

** IE4 DOM

[19] [[IE事象モデル]]には [CODE(DOMm)@en[[[dispatchEvent]]]] と似たものとして
[CODE(DOMm)@en[[[fireEvent]]]] がありました。

;; [CODE(DOMm)@en[[[fireEvent]]]] の項を参照。

** W3C DOM

[20] [[DOM3]] までは[[ディスパッチ]]と[[発火]]は同義としていました。

;; 現在の [[DOM Standard]] では区別されています。

[21] [CITE[XML Events 2]]
( ([TIME[2010-12-18 05:25:20 +09:00]] 版))
<http://www.w3.org/TR/xml-events2/#section-dispatchEvent-element>

** DOM Standard

[2] [CITE@en[Re: '''['''dom-events''']''' dispatchEvent()ing a UA-dispatched event]]
([[Stewart Brodie]] 著, [TIME[2010-05-06 18:18:38 +09:00]] 版)
<http://lists.w3.org/Archives/Public/www-dom/2010AprJun/0042.html>

[18] [CITE@en[Bug 12230 – Some synthetic events cause actions]]
( ([TIME[2014-05-24 06:34:51 +09:00]] 版))
<https://www.w3.org/Bugs/Public/show_bug.cgi?id=12230>

[6] [CITE[Allow passing a target override to the dispatch algorithm. · d0f2c0b · whatwg/dom]]
( ([TIME[2013-11-13 11:39:36 +09:00]] 版))
<https://github.com/whatwg/dom/commit/d0f2c0bbc940061ac2a4623553de5c26409cce96>

[7] [CITE@en[Web Applications 1.0 r8271 Use DOM's hooks for defining the magic 'load' event in The End]]
( ([TIME[2013-11-13 06:44:00 +09:00]] 版))
<http://html5.org/tools/web-apps-tracker?from=8270&to=8271>

[8] [CITE[Allow passing a target override to the dispatch algorithm. · d0f2c0b · whatwg/dom]]
( ([TIME[2013-12-27 06:48:21 +09:00]] 版))
<https://github.com/whatwg/dom/commit/d0f2c0bbc940061ac2a4623553de5c26409cce96>

[11] [CITE@en[Check dispatch flag before initializing https://www.w3.org/Bugs/Public/s... · ccacdec · whatwg/dom]]
( ([TIME[2014-10-22 02:06:34 +09:00]] 版))
<https://github.com/whatwg/dom/commit/ccacdec1b3c99019677e8737c8f8550583984e67>

[14] [CITE@en[Clean up the event dispatch algorithms · whatwg/dom@d8cb495]]
([TIME[2015-11-23 17:49:13 +09:00]] 版)
<https://github.com/whatwg/dom/commit/d8cb49567c7018d4f9cfddf30fbc24f40693a9b0>

[15] [CITE@en[Fix the incorrect side effects of dispatch' target override · whatwg/dom@b8a8eb2]]
([TIME[2015-11-23 17:49:21 +09:00]] 版)
<https://github.com/whatwg/dom/commit/b8a8eb272d1ff3c654b3c5ae690c990f1d0cd700>

[16] [CITE@en[Fix #84: event listeners can be removed but not added during invocation · whatwg/dom@02710dd]]
([TIME[2015-11-23 17:49:26 +09:00]] 版)
<https://github.com/whatwg/dom/commit/02710dd77e89586ad78b9bce0a3b6fe5f9b2ad19>

* メモ

[17] [CITE@en-us[element.dispatchEvent - MDC Doc Center]]
( ([TIME[2010-12-30 21:50:11 +09:00]] 版))
<https://developer.mozilla.org/ja/DOM/element.dispatchEvent>

[63] [CITE@en[Check for "stop immediate propagation flag" earlier in invoke (no nor… · whatwg/dom@1cce4fd]]
([TIME[2016-02-15 00:21:28 +09:00]] 版)
<https://github.com/whatwg/dom/commit/1cce4fd5e39ac48c047d9de3d5efefc0a909db14>

[64] [CITE@en[Add EventListenerOptions and passive event listener feature · whatwg/dom@253a21b]]
([TIME[2016-02-15 00:21:40 +09:00]] 版)
<https://github.com/whatwg/dom/commit/253a21b8e78e37447c47983916a7cf39c4f6a3c5>

[67] [CITE@en[Integrate HTML's monkey patch to the event path · whatwg/dom@2d7b637]]
([TIME[2016-02-19 18:38:19 +09:00]] 版)
<https://github.com/whatwg/dom/commit/2d7b637b31fc6bad8f6c4743fb61016392fac382>

[68] [CITE@en[Remove event path monkey patch · whatwg/html@dad854e]]
([TIME[2016-02-19 18:38:25 +09:00]] 版)
<https://github.com/whatwg/html/commit/dad854e4c1f5f7098a1b1ec7f33e2218796f7442>

[72] [CITE@en[Fix #169: do not invoke target while iterating eventPath · whatwg/dom@26f7947]]
([TIME[2016-02-21 12:09:22 +09:00]] 版)
<https://github.com/whatwg/dom/commit/26f7947dce80934f75e0b399a40c444132e2ab9b>

[74] [CITE@en[Check for "stop immediate propagation flag" earlier in invoke (no nor… · whatwg/dom@1cce4fd]]
([TIME[2016-02-12 14:47:29 +09:00]] 版)
<https://github.com/whatwg/dom/commit/1cce4fd5e39ac48c047d9de3d5efefc0a909db14>

[75] [CITE@en[Fix #156: add legacy event type check to invoke algorithm · whatwg/dom@a026ccf]] ([TIME[2016-02-21 15:49:41 +09:00]] 版) <https://github.com/whatwg/dom/commit/a026ccf3efa8d34fb0cac580928f61d18b1e9f76>

[87] [CITE@en[Clarify EventTarget.dispatchEvent() · whatwg/dom@59d283a]]
([TIME[2016-02-27 11:44:45 +09:00]] 版)
<https://github.com/whatwg/dom/commit/59d283ab9c5d2e3dd823bca21eecaaaca402b181>

[88] [CITE@en[Properly check event's stop immediate propagation flag in "inner invoke" · whatwg/dom@b7a94a2]]
([TIME[2016-03-02 16:27:36 +09:00]] 版)
<https://github.com/whatwg/dom/commit/b7a94a2d90b37330ae9a5e5a125ce9047f867e42>

[90] [CITE@en[Editorial: check stop propagation flag at start of invoke · whatwg/dom@a768d8e]]
([TIME[2016-04-22 18:28:03 +09:00]] 版)
<https://github.com/whatwg/dom/commit/a768d8eef0584ea8ee831895b5c9dc8bcf363afc>

[91] [CITE@en[Enable an event listener to be invoked just once · whatwg/dom@e002d78]]
([TIME[2016-04-25 18:36:19 +09:00]] 版)
<https://github.com/whatwg/dom/commit/e002d7811533e276c9927b237748c4e170f4cb10>

[96] [CITE@en[Address reentrancy issue with "once" listeners]]
([[annevk]]著, [TIME[2016-06-08 01:51:48 +09:00]])
<https://github.com/whatwg/dom/commit/5324200d70eb23276cb58b814416e19c436104f2>

[48] [CITE@en[Shadow: define event retargeting for shadow trees]]
([[annevk]]著, [TIME[2016-04-29 21:04:07 +09:00]])
<https://github.com/whatwg/dom/commit/ed94c9f2f1850b2e6a9b357c6870186859da4c2d>

[94] [CITE@en[Rename scoped to composed and invert its meaning]]
([[annevk]]著, [TIME[2016-05-10 16:14:09 +09:00]])
<https://github.com/whatwg/dom/commit/6e1b0386644301859c697ee2e868313963d2a602>

[97] [CITE@en[Shadow: define event's relatedTarget handling]]
([[hayatoito]]著, [TIME[2016-07-22 16:39:19 +09:00]])
<https://github.com/whatwg/dom/commit/ef69a247681532e6102ced9a78aabf7f7a536108>

[99] [CITE@en[Shadow: add "retargeting steps" to the dispatch algorithm]]
([[hayatoito]]著, [TIME[2016-08-04 18:36:08 +09:00]])
<https://github.com/whatwg/dom/commit/fbc0c312c3ead6940718e3d2d7511f2b014011e1>

[101] [CITE@en[Unset stop propagation flags after dispatch]]
([[annevk]]著, [TIME[2016-08-15 19:31:21 +09:00]])
<https://github.com/whatwg/dom/commit/806d4aab584f6fc38c21f8e088b51b8ba3e27e20>

[103] [CITE@en[Shadow: adjust composedPath() when currentTarget is a Window object]]
([[hayatoito]]著, [TIME[2016-09-14 13:43:55 +09:00]])
<https://github.com/whatwg/dom/commit/2153769e1ecf55f2d202fd5c6f996023b34545e5>

[104] [CITE@en[Redesign fire an event and target override]]
([[annevk]]著, [TIME[2016-10-15 00:32:41 +09:00]])
<https://github.com/whatwg/dom/commit/e19d7eef74fb83792415a4a78ed866d28f4cc543>

[105] [CITE@en[Editorial: major cleanup around firing and dispatching events]]
([[annevk]]著, [TIME[2016-10-19 01:00:43 +09:00]])
<https://github.com/whatwg/html/commit/8ffbd146d4709057e45dd6cfc81e7a70897050c5>

[106] [CITE@en[Shadow: do not dispatch an event when target is reletedTarget]]
([[hayatoito]]著, [TIME[2016-10-18 15:15:38 +09:00]])
<https://github.com/whatwg/dom/commit/afac5044c18fa871837b0a86d21f338b29f7a292>

[110] [CITE@en[Define special dispatch behavior for click events]]
([[annevk]]著, [TIME[2016-10-18 01:55:28 +09:00]])
<https://github.com/whatwg/dom/commit/cb12fd4e2db68a9d86841a13a73611e16f9f1fb4>

[119] [CITE@en[Pass listeners to inner invoke]]
([[annevk]]著, [TIME[2017-01-04 03:33:59 +09:00]])
<https://github.com/whatwg/dom/commit/627eeaac169fd8fdec851f1907e20a9b155898cb>

[120] [CITE@en[Fallback to legacy type only when event is trusted]]
([[upsuper]]著, [TIME[2017-02-08 17:29:16 +09:00]])
<https://github.com/whatwg/dom/commit/9d8e4ed93896c50b1cacfceca6f93c56337686d8>

[121] [CITE@en[Add legacyOutputDidListenersThrowFlag to event dispatch for IDB]]
([[annevk]]著, [TIME[2017-02-14 19:08:45 +09:00]])
<https://github.com/whatwg/dom/commit/56a4d6ba7a96af1331363f0780c3dac12ed6bfdb>

[123] [CITE@en[Use "legacyOutputDidListenersThrowFlag" DOM hook]]
([[inexorabletash]]著, [TIME[2017-03-08 02:13:40 +09:00]])
<https://github.com/w3c/IndexedDB/commit/214a1357f690640615ad5b395cf96ffc2de61da3>

[124] [CITE@en[Editorial: use Infra's return and continue concepts]]
([[annevk]]著, [TIME[2017-03-18 00:56:48 +09:00]])
<https://github.com/whatwg/dom/commit/16944b0faef3da894c825d7a154a7bf9a60ea8a4>

[127] [CITE@en[Clear event's target and relatedTarget when dispatch ends at a shadow…]]
([[TakayoshiKochi]]著, [TIME[2017-10-05 17:18:37 +09:00]])
<https://github.com/whatwg/dom/commit/9ada239e14fe7964577276ef9d8972069e665247>

[131] [CITE@en[Event.target should return null after dispatch is complete, when stopped at ShadowRoot · Issue #511 · whatwg/dom]]
([TIME[2017-10-10 22:27:23 +09:00]])
<https://github.com/whatwg/dom/issues/511>

[132] [CITE@en[Set event.target to null when dispatching finishes at ShadowRoot by TakayoshiKochi · Pull Request #513 · whatwg/dom]]
([TIME[2017-10-10 22:30:40 +09:00]])
<https://github.com/whatwg/dom/pull/513>

[133] [CITE@en[Editorial: add "add an event listener" hook]]
([[annevk]]著, [TIME[2018-03-14 17:40:36 +09:00]])
<https://github.com/whatwg/dom/commit/2bdabb15de8112d9783cf393a3d6c37911149f77>

[134] [CITE@en[Editorial: remove object argument from inner invoke]]
([[annevk]]著, [TIME[2018-03-27 21:06:56 +09:00]])
<https://github.com/whatwg/dom/commit/bf6ff4574b054ec7b3a1aae40cea99c09a1eec5f>

[135] [CITE@en[Editorial: remove object argument from inner invoke]]
([[annevk]]著, [TIME[2018-03-27 21:06:56 +09:00]])
<https://github.com/whatwg/dom/commit/bf6ff4574b054ec7b3a1aae40cea99c09a1eec5f>

[136] [CITE@en["inner invoke" does not need to take object · Issue #618 · whatwg/dom]]
([TIME[2018-03-29 14:44:55 +09:00]])
<https://github.com/whatwg/dom/issues/618>

[137] [CITE@en[Editorial: remove object argument from inner invoke by annevk · Pull Request #619 · whatwg/dom]]
([TIME[2018-03-29 14:45:09 +09:00]])
<https://github.com/whatwg/dom/pull/619>

[138] [CITE@en[Editorial: create a concept for event's target]]
([[annevk]]著, [TIME[2018-03-30 13:24:45 +09:00]])
<https://github.com/whatwg/dom/commit/07c110c87b8e4b1f7ecae09727b859bb75b17a73>

[139] [CITE@en[Standardize window.event]]
([[miketaylr]]著, [TIME[2018-06-07 17:15:23 +09:00]])
<https://github.com/whatwg/dom/commit/c69d7c0fb8796de884652c517825122d12901ef5>

[148] [CITE@en[Standardize srcElement, returnValue, and window.event · Issue #334 · whatwg/dom]]
([TIME[2018-06-11 23:38:42 +09:00]])
<https://github.com/whatwg/dom/issues/334>

[149] [CITE@en[Avoid setting target to the Window object]]
([[annevk]]著, [TIME[2018-09-17 18:30:53 +09:00]])
<https://github.com/whatwg/dom/commit/0b04ae848b27f9eaf6f0bd17ecaff0bd7f833068>

[150] [CITE@en[Dispatch event always set the event.target to the global object after dispatch · Issue #697 · whatwg/dom]]
([TIME[2018-10-22 01:13:37 +09:00]])
<https://github.com/whatwg/dom/issues/697>

[151] [CITE@en[Avoid setting target to the Window object by annevk · Pull Request #698 · whatwg/dom]]
([TIME[2018-10-22 01:13:57 +09:00]])
<https://github.com/whatwg/dom/pull/698>