* 仕様書

[REFS[
- [12] '''[CITE@en[DOM Standard]] ([TIME[2016-07-05 18:22:22 +09:00]]) <https://dom.spec.whatwg.org/#dom-event-eventphase>'''
- [6] [CITE@en[DOM Standard]] ([TIME[2016-02-12 01:13:05 +09:00]] 版) <https://dom.spec.whatwg.org/#dom-eventlisteneroptions-capture>
]REFS]

* 相

[11] [[イベント]]の [[dispatch]] (による[[イベントリスナー]]の呼び出し) には、
次の3つ (+ 1) の[RUBY[[[相]]][フェーズ]]があります。

[FIG(table)[
:name: 通称
:phase: [CODE[eventPhase]] [[属性値]] (定数名)
:value: [CODE[eventPhase]] [[属性値]] (数値)
:dir: [[イベントリスナー]]実行順
:capture: 実行される[[イベントリスナー]]の[F[捕獲]]
:bubbles: [[イベントリスナー]]が実行される [CODE(DOMa)@en[bubbles]]

:phase: [DFN[[CODE[NONE]]][eventPhase]]
:value: [DFN[[N[0]]]]

:name: [RUBYB[捕獲]@en[capturing]]フェーズ
:phase: [DFN[[CODE[CAPTURING_PHASE]]]]
:value: [DFN[[N[1]]]]
:dir: [[根]] → [[葉]]
:capture: [[真]]
:bubbles: [[真]], [[偽]]

:name: [RUBYB[対象]@en[target]]フェーズ
:phase: [DFN[[CODE[AT_TARGET]]]]
:value: [DFN[[N[2]]]]
:dir: [[葉]] → [[根]]
:capture: [[偽]]
:bubbles: [[真]], [[偽]]

:name: [RUBYB[泡立ち]@en[bubbling]]フェーズ
:phase: [DFN[[CODE[BUBBLING_PHASE]]]]
:value: [DFN[[N[3]]]]
:dir: [[葉]] → [[根]]
:capture: [[偽]]
:bubbles: [[真]]
]FIG]

[16] [F[相]]は、 [CODE[NONE][eventPhase]] → [CODE[CAPTURING_PHASE]]
→ [CODE[AT_TARGET]] → [CODE[BUBBLING_PHASE]] → [CODE[NONE]] の順に変化します。

[17] [[影木]]が含まれる場合には、
[CODE[CAPTURING_PHASE]]
→ [CODE[AT_TARGET]] → [CODE[BUBBLING_PHASE]] → [CODE[AT_TARGET]] → [CODE[BUBBLING_PHASE]]
のように、何度も [CODE[AT_TARGET]] となることがあります。

[19] [CODE[CAPTURING_PHASE]] は[[根]]から[[葉]]の方向へと順に進んでいくのですが、
[[イベント対象]]は飛ばしていくことになります。

[18] [CODE[AT_TARGET]] は、常に[[イベント対象]]の[[イベントリスナー]]の実行時
([CODE[[[event.target]] === event.[[currentTarget]]]]) です。
[[影木]]が含まれる場合には、[[影ホスト]]でも [CODE[AT_TARGET]] となります。
[[イベント対象]]では [CODE[CAPTURING_PHASE]] や [CODE[BUBBLING_PHASE]]
となることはありません。

[13] [[イベントオブジェクト]]は、[DFN[[F[[RUBYB[相]@en[phase]]]]]]を持ちます [SRC[>>12]]。
その値は、 >>11 の4つの値のいずれかです。既定値は [CODE[NONE][eventPhase]] です。

[14] [CODE(DOMi)@en[Event]] [[インターフェイス]]の [DFN[[CODE(DOMa)@en[eventPhase]]]]
[[IDL属性]]の[[取得器]]は、[[文脈オブジェクト]]の[F[相]]を返さなければ[MUST[なりません]]
[SRC[>>12]]。

[15] [CODE(DOMi)@en[Event]] [[インターフェイス]]の [CODE(DOMc)@en[NONE][eventPhase]],
[CODE(DOMc)@en[CAPTURING_PHASE]], [CODE(DOMc)@en[AT_TARGET]],
[CODE(DOMc)@en[BUBBLING_PHASE]] 各[[定数]]は、それぞれの値 (>>11)
を返さなければなりません [SRC[>>12]]。

* 処理

[10] [[dispatch]] 参照。

* [CODE(DOMi)@en[EventListenerOptions]] 辞書 [CODE(DOMa)@en[capture][eventPhase]] メンバー

[7] [[辞書]] [CODE(DOMi)@en[EventListenerOptions]] の[[メンバー]]
[DFN[[CODE(DOMa)@en[capture]]][eventPhase]] は、[[イベントリスナー]]の[F[捕獲]]の値を
[CODE(IDL)@en[boolean]] [SRC[>>6]] で指定します。

* 歴史

** W3C DOM

[8] capture: [[イベント]]がその対象によって取り扱われる前に、その対象の[[祖先]]によって取り扱うことが出来る処理。 Capturing。 (''Document Object Model Events'' <http://www.w3.org/TR/DOM-Level-2-Events/events.html#Events-overview-terminology>)

** ev:listener 要素 phase 属性, ev:phase 属性 (XML 事象)

[1] [[XML事象]]の [DFN[[CODE(XMLa)[phase]] 属性]]は、
[[事象聴取器]]が[[活性化]]される段階を指定します。

仕様書: <http://www.w3.org/TR/xml-events#attr-listener-phase>

属性値:
:[CODE(XML)[[[capture]]]]:[[捕獲]]段階
[WEAK[([[根要素]]から[[対象要素]]に向かって下っていく段階)]]
で活性化されます。
:[CODE(XML)[[[default]]]] (既定値):[[泡立]]段階または対象段階
[WEAK[(対象要素と、対象要素から先祖要素に向かって上っていく段階)]]
で活性化されます。

すべての事象が泡立つわけではありませんから注意が必要です。

** XBL2

[3] [CITE@en-US[XML Binding Language (XBL) 2.0]]
( ([TIME[2007-03-16 22:20:16 +09:00]] 版))
<http://www.w3.org/TR/2007/CR-xbl-20070316/#the-default>

[2] [CITE@en-US[XML Binding Language (XBL) 2.0]]
( ([TIME[2007-03-16 22:20:16 +09:00]] 版))
<http://www.w3.org/TR/2007/CR-xbl-20070316/#phase>

** DOM イベント

[5] [CITE[IRC logs: freenode / #whatwg / 20140410]]
( ([TIME[2014-04-11 17:21:00 +09:00]] 版))
<http://krijnhoetmer.nl/irc-logs/whatwg/20140410>

[4] [CITE[IRC logs: freenode / #whatwg / 20140410]]
( ([TIME[2014-04-11 17:21:00 +09:00]] 版))
<http://krijnhoetmer.nl/irc-logs/whatwg/20140410>

[9] [CITE@en[Add EventListenerOptions and passive event listener feature · whatwg/dom@253a21b]]
([TIME[2016-02-15 00:00:32 +09:00]] 版)
<https://github.com/whatwg/dom/commit/253a21b8e78e37447c47983916a7cf39c4f6a3c5>



[20] [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>

[21] [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>