[8] カスタム要素反応 >>7 は、 カスタム要素に関する変化を通知するコールバック関数です。 次のものがあります。
[9] カスタム要素構築器は、カスタム要素定義を作成する際に、
必ず指定します (define
メソッドの第2引数)。
それ以外は、カスタム要素構築器の prototype
オブジェクトのプロパティーとして、必要に応じて指定できます。
[12] カスタム要素構築器は、その時点ではまだカスタムでない要素について実行されます。 それ以外のコールバックは、カスタム要素について実行されます。
[10] カスタム要素反応は、該当する DOM 操作が発生した時に実行されます。 複数の変更が発生する場合であっても、一連の変更がすべて適用された後、 呼び出し元に戻る直前にまとめて実行されます。 著者視点では DOM 操作中に同期的に呼び出されていますが、 利用者エージェント視点では DOM 操作直後に非同期的に呼び出しているので、 著者は DOM 操作の途中段階にアクセスすることはできませんし、 利用者エージェントは DOM 操作中の不安定な状態を著者に晒さずに済みます。
[11] あるカスタム要素について、ある操作群に対するカスタム要素反応群は、 必ず同じ順序で実行されることが保証されます。 複数のカスタム要素全体については (カスタム要素反応内で他の要素を変更する場合があるので) 保証されません。 >>7
[99] カスタム要素反応器が節点木を操作すると予期せぬ結果となることがあるため、 これを避けるべきです。 >>7
[100] 例えば connectedCallback
が呼ばれている要素が既に他のカスタム要素反応器によって切断されているかもしれません。
[70] 実行するべきカスタム要素反応は、 Webブラウザーによって要素ごとに管理されます。 要素ごとのキューを使うので、要素ごとの実行順序は保証されますが、 異なる要素でどの順序で実行されるかは保証されません。
[16] 要素は、カスタム要素反応キューを持ちます。 これは、格上げ反応またはコールバック反応のキューで、 初期状態は空です。 >>7
[71] 更に、どの要素に実行するべきカスタム要素反応が存在するかが、 要素キューによって管理されます。
[14] 要素キューは、 要素のキューで、初期状態は空です。 >>7
[13] 関連する類似起源閲覧文脈群の単位は、 カスタム要素反応群スタックを持ちます >>7。
[72] 構文解析器や DOM API 内部では、カスタム要素反応群スタックの本体スタックの要素キューが使われます。 カスタム要素反応は同期的に呼び出され、そこから更に再帰的にカスタム要素反応が呼び出される可能性があるため、 要素キューはスタックに積まれていくことになっています。
[73] contenteditable
により利用者の操作で DOM
操作が行われた場合には、バックアップ要素キューが使われます >>7。
カスタム要素反応はマイクロタスクで呼び出されます。
[15] 要素について適切な要素キューに要素を追加するには、 次のようにします >>7。
[65] バックアップ要素キューに関するマイクロタスクは、次のようにします >>7。
CEReactions
[25] Web IDL のいくつかのメンバーには、
CEReactions
拡張属性を指定できます >>7。
CEReactions
は、
カスタム要素反応を適宜実行しなければならないことを表しています。
[26] この拡張属性は、操作、IDL属性、設定器、削除器以外に指定してはなりません。 読み取り専用属性に指定してはなりません。 >>7
[27] この拡張属性は、引数を指定してはなりません >>7。
[28] この拡張属性が指定されている場合は、 当該メンバーの処理は、次のようにしなければなりません >>7。
[33] つまり、当該メンバーの処理中に DOM 操作が発生し、 カスタム要素反応を実行しなければならないことになったら、 当該メンバーの処理の最後にまとめて順に実行されます。
[34] この拡張属性は、 DOM に変更を加えるあらゆる Web IDL のメンバーに付与されています。
[52] vendor prefix 付きの内容属性を反映するIDL属性は、
CEReactions
付きでなければなりません
>>53。
[69] その他 Webブラウザー独自 (非標準) の DOM 操作を伴うIDL属性やメソッドも、
CEReactions
付きでなければなりません >>7。
[35] カスタム要素が文書に接続された際は、その旨を通知するためスクリプトが実行される可能性があります。 (仕様書上は挿入手順群ではなく、挿入手順群の直後の別の処理として定義されています。)
[41] disconnectedCallback
の呼び出しは、仕様書上は削除手順群ではなく、
削除手順群の直後の別の処理として定義されています。
[42] 節点について、次のようにします >>40。disconnectedCallback
[47] 仕様書上は、属性変更手順群ではなく、その直前に実行される別の処理として規定されています。
要素、局所名、古い値、値、名前空間について、
次のようにします >>46。attributeChangedCallback
[1] Add custom elements to HTML · whatwg/html@6e7eaa4 ( 版) https://github.com/whatwg/html/commit/6e7eaa4bd2912965fd83766f99f984f249531f3a
[2] Formalize custom element reactions · whatwg/html@27aa7bc ( 版) https://github.com/whatwg/html/commit/27aa7bc4fa6f168654a8c858f0773e611f679b39
[3] Add [CEReactions] annotations to mutating methods · whatwg/dom@3cd02d1 ( 版) https://github.com/whatwg/dom/commit/3cd02d139c159a31fbb400e03932652c72fc7812
[4] Integrate callback invocation with IDL · Issue #186 · w3c/webcomponents ( 版) https://github.com/w3c/webcomponents/issues/186
[5] DOM XSLTProcessor - WHATWG Wiki ( 版) https://wiki.whatwg.org/wiki/DOM_XSLTProcessor
[6] Add [CEReactions] annotation to as · w3c/preload@b632000 ( 版) https://github.com/w3c/preload/commit/b632000d8bd32118d3b7833b7c0caca044329072
[54] Remove some redundant [CEReactions] for tables ( (domenic著, )) https://github.com/whatwg/html/commit/c2dfb033b144775e37975c6740a2f5d7842e1b16
[55] Export the definitions of [CEReactions] and [HTMLConstructor] ( (domenic著, )) https://github.com/whatwg/html/commit/6e040bfecceb8aed7949abda383656e0bbf449e0
[56] Enqueue custom element reactions appropriately during upgrades (domenic著, ) https://github.com/whatwg/html/commit/2328ccf97b80cba7835df3dc5d1a687d51fbfcf4
[57] Take care of missing custom element reactions (domenic著, ) https://github.com/whatwg/html/commit/a57c88711c995356e44d019f5bd81d0cdedac2bf
[74] Convert custom element callbacks to Web IDL callback types (domenic著, ) https://github.com/whatwg/html/commit/be055730a11a8f952feb8fdb73e7caa01460e5a4
[76] Process custom element connectedCallback immediately during parsing (domenic著, ) https://github.com/whatwg/html/commit/ca818ee1c8458c3b862acd00d11779294cb89eea
[78] Remove old-fashioned vendor-specific extension advice (annevk著, ) https://github.com/whatwg/html/commit/76f88a4015d55273749c34238d250b7bdb1aff62
[79] Correct some [CEReactions] usage (annevk著, ) https://github.com/whatwg/html/commit/404f98bb543a244e5aeffe266d581f317e295598
[80] Fix which built-in elements can be customized (domenic著, ) https://github.com/whatwg/html/commit/7d6b279b0d2bc30752700155a043b65441fe12e3
[81] Tweak [CEReactions] definition and usage (domenic著, ) https://github.com/whatwg/html/commit/c422734d44ae9897c1700daf08bd415e0dc5f9e1
[82] Remove [CEReactions] on [PutForwards] readonly attribute (johndai1984著, ) https://github.com/whatwg/dom/commit/5f1a6065921790e35b81871928f6d861bc6d8d29
[83] Clarify the behavour if the custom element reaction throws any exception · Issue #2842 · whatwg/html () https://github.com/whatwg/html/issues/2842
[84] Add [CEReactions] to createElement() (annevk著, ) https://github.com/whatwg/dom/commit/fb6638fa3d02985e43782d8857edaa915d499261
[85] Add [CEReactions] to createElement() by annevk · Pull Request #506 · whatwg/dom () https://github.com/whatwg/dom/pull/506
[86] Clarify custom element reaction arguments passed (domenic著, ) https://github.com/whatwg/html/commit/c5019ae75d7dfaaf7829cf45c56700e97b24ea61
[87] Custom Elements Methods Clarification · Issue #2299 · whatwg/html () https://github.com/whatwg/html/issues/2299
[88] Clarify custom element reaction arguments passed by domenic · Pull Request #3125 · whatwg/html () https://github.com/whatwg/html/pull/3125
[89] Make [CEReactions]'s treatment of exceptions explicit (domenic著, ) https://github.com/whatwg/html/commit/8b055c0497070731c526e8c0bb655af65fb4e10e
[91] How does CEReactions interact with thrown exceptions? · Issue #3217 · whatwg/html () https://github.com/whatwg/html/issues/3217
[92] Make [CEReactions]'s treatment of exceptions explicit by domenic · Pull Request #3235 · whatwg/html () https://github.com/whatwg/html/pull/3235
[93] Hide `nonce` content attribute values. (#2369) by mikewest · Pull Request #2373 · whatwg/html () https://github.com/whatwg/html/pull/2373
[94] Fix and clarify some [CEReactions] annotations (domenic著, ) https://github.com/whatwg/html/commit/023c11216ca2ee1c653df09a594b98fca1323975
[95] nonce IDL attribute should have the semantics of CEReactions · Issue #3887 · whatwg/html () https://github.com/whatwg/html/issues/3887
[96] textarea's value IDL attribute doesn't need CEReactions · Issue #3889 · whatwg/html () https://github.com/whatwg/html/issues/3889
[97] Fix and clarify some [CEReactions] annotations by domenic · Pull Request #3901 · whatwg/html () https://github.com/whatwg/html/pull/3901
[98] Custom element reactions ought not to modify the node tree (annevk著, ) https://github.com/whatwg/html/commit/cc6c51d5f7461880ea93736256137c6bb565270c
[101] Always enqueue an element regardless of callback by annevk · Pull Request #4127 · whatwg/html () https://github.com/whatwg/html/pull/4127
[102] Presence of disconnectedCallback can expedite an invocation of connectedCallback · Issue #760 · w3c/webcomponents () https://github.com/w3c/webcomponents/issues/760
[103] Add a nonintuitive disconnectedCallback example by annevk · Pull Request #4237 · whatwg/html () https://github.com/whatwg/html/pull/4237