* 仕様書

[REFS[
- [1] [CITE@en-GB-x-hixie[HTML Standard]] ([TIME[2016-05-14 09:55:50 +09:00]]) <https://html.spec.whatwg.org/#concept-custom-element-definition-lifecycle-callbacks>
- [5] [CITE@en-GB-x-hixie[HTML Standard]] ([TIME[2016-05-14 09:55:50 +09:00]]) <https://html.spec.whatwg.org/#callback-reaction>
]REFS]

* [F[生活環コールバック群]] (カスタム要素定義)

[2] [[カスタム要素定義]]は、[DFN[[F[[RUBYB[[[生活環コールバック群]]]@en[lifecycle callbacks]]]]]]を持ちます
[SRC[>>1]]。

[3] これは、[[写像]]です。次の3つの[[キー]]を持ちます [SRC[>>3]]。
[FIG(short list)[
- [CODE[connectedCallback]]
- [CODE[disconnectedCallback]]
- [CODE[attributeChangedCallback]]
- [CODE[adoptedCallback]]
]FIG]

[4] 各[[キー]]に対応する値は、
[CODE(IDL)@en[Function]] か、[CODE(IDL)[null]]のいずれかです。
既定値は、[CODE(IDL)@en[null]] です。 [SRC[>>3]]

[7] これらの値は、 [CODE(DOMm)@en[define]] [[メソッド]]で[[カスタム要素定義]]を作成する時に、
[[カスタム要素構築器]]の [CODE(JS)@en[prototype]] から設定されます。

* コールバック反応

[18] [DFN[[RUBYB[コールバック反応]@en[callback reaction]]]]は、
[[生活環コールバック]]を実行するもので、
[[コールバック関数]]と[[引数リスト]]を持ちます。 [SRC[>>5]]

[6] [[コールバック反応]]は、[[カスタム要素反応キュー]]で使われます。

[8] [DFN[[RUBYB[カスタム要素コールバック反応をキューに追加]@en[enqueue a custom element callback reaction]]]]する操作は、
[[カスタム要素]][VAR[要素]]、
[VAR[コールバック名]]、[VAR[引数リスト]]について、次のようにします [SRC[>>5]]。

[FIG(steps)[
= [9] [VAR[定義]]を、[VAR[要素]]の[F[カスタム要素定義]]に設定します。
= [14] [VAR[コールバック]]を、[VAR[定義]]の[F[生活環コールバック群]]の[F[キー]]が[VAR[コールバック名]]の項目の[F[値]]に設定します。
= [15] [VAR[コールバック]]が[[未定義]]なら、
== [16] ここで停止します。
= [17] [VAR[コールバック名]]が [CODE[attributeChangedCallback]] なら、
== [19] [VAR[属性名]]を、[VAR[引数リスト]]の最初の項目に設定します。
== [20] [VAR[定義]]の[F[被観察属性群]]に[VAR[属性名]]が含まれないなら、
=== [21] ここで停止します。
= [22] [VAR[要素]]の[F[カスタム要素反応キュー]]に、
[VAR[コールバック]]と[VAR[引数リスト]]の組である[[コールバック反応]]を追加します。
= [23] [VAR[要素]]について[[適切な要素キューに要素を追加]]します。
]FIG]

;; [25] [[要素の格上げ]]や[[挿入]]や[[削除]]で呼び出されます。

[24] 実行については、[[カスタム要素反応キュー]]参照。

* 歴史

[26] [CITE@en[Take care of missing custom element reactions]]
([[domenic]]著, [TIME[2016-06-30 03:04:46 +09:00]])
<https://github.com/whatwg/html/commit/a57c88711c995356e44d019f5bd81d0cdedac2bf>

[27] [CITE@en[Fix customized built-in element "is" handling and reactions]]
([[domenic]]著, [TIME[2016-06-07 01:55:58 +09:00]])
<https://github.com/whatwg/html/commit/4e632a82728d68a8a6bd32f02083762b7792ddf7>

[10] [CITE@en[Implement new custom element adoption semantics]]
([[domenic]]著, [TIME[2016-07-21 18:25:57 +09:00]])
<https://github.com/whatwg/html/commit/feb77d09793a2ed8d49a6949dbca73eabb60ae79>