Mutation Observers

変異観測器 (DOM)

[5] 変異観測器 (mutation observer) (変異オブザーバー) は、 DOM の変化の通知をスクリプトが受け取るための仕組みです。 予め所定の方法で観測器となるコールバック関数を指定することで、 DOM木における子供属性の変化を観測し、そのタイミングで処理を行うことができます。

処理

[33] 変異観測器は、変異が発生したタスクの処理後、マイクロタスクとして呼び出されます。

ごみ収集

[19] ごみ収集も参照。

[21] observe した変異観測器は、節点から強い参照を持たれます。 従って、 JavaScript のコードから変異観測器への参照が無くなっても、 引き続き動作を続けます。不要になった時は、 (参照を無くす前に) disconnect する必要があります。

歴史

変異イベントから変異観測器へ

[4] 変異観測器は、変異イベントの代替として考案され、 DOM4 仕様に取り込まれました。

[34] 変異観測器の呼び出しはイベントループと密接に関わっているため、 HTML Standard で規定されました。

構文解析器と変異観測器

[35] 変異イベント構文解析によって生じる DOM木の変化については発生しないことになっていましたが、 変異観測器はそれも観測できることと規定されました。

[36] Integrate with the new microtask world order. https://www.w3.org/Bugs/Pu... · d8b0057 · whatwg/dom ( ( 版)) https://github.com/whatwg/dom/commit/d8b0057ca0dabb961d9d8435fba5e0b5544946d8

[37] Exceptions thrown from mutation observer callbacks should be reported pe... · 2e567d3 · whatwg/dom ( ( 版)) https://github.com/whatwg/dom/commit/2e567d3308724b29c9787bd069332775a3dbd8cc

[2] Replacing a child within parent had the wrong previousSibling in its … · whatwg/dom@d9fbd12 ( 版) https://github.com/whatwg/dom/commit/d9fbd12e2115fed6e37236a90cff4dfbb959b9d0

[3] Always queue mutation records after said mutations. Fixes #60. · whatwg/dom@bc31c18 ( 版) https://github.com/whatwg/dom/commit/bc31c1821451cb2fc85fe91b3cb4ffbf92add4d1

[6] Close #122: fix mutation record for a removing a node · whatwg/dom@9202ada ( 版) https://github.com/whatwg/dom/commit/9202ada4ae8f606b67df95ea39323316e36536c2

[7] Clarify initial state of "mutation observer compound microtask queued… · whatwg/dom@f2427d8 ( 版) https://github.com/whatwg/dom/commit/f2427d8b83f6922ea58dd21f7bc3633d13ffafef

[8] Reword queue a mutation record to avoid "continue" · whatwg/dom@d3653ac ( 版) https://github.com/whatwg/dom/commit/d3653ac38d388cf64d88f32439cae590c1658e9d

[9] 23250 – No way with mutation observers to watch mutations to an element's parent ( 版) https://www.w3.org/Bugs/Public/show_bug.cgi?id=23250

[10] Do not let mutation observer callbacks influence the used signal slot… ( (annevk著, )) https://github.com/whatwg/dom/commit/d4ca21707fe3eb5d60dd1de0111752504b3da185

[11] Web Applications 1.0 r7009 Add support for MutationObservers. (Also, add a minor internal note in the canvas section unrelated to this.) (Also, automated update of the CLDR which resulted in removing separate support for el-POLYTON.) ( ( 版)) http://html5.org/tools/web-apps-tracker?from=7008&to=7009

[12] IRC logs: freenode / #whatwg / 20120409 ( ( 版)) http://krijnhoetmer.nl/irc-logs/whatwg/20120409

[13] IRC logs: freenode / #whatwg / 20120830 ( ( 版)) http://krijnhoetmer.nl/irc-logs/whatwg/20120830#l-398

[14] IRC logs: freenode / #whatwg / 20120922 ( ( 版)) http://krijnhoetmer.nl/irc-logs/whatwg/20120922

[15] Web Applications 1.0 r7484 The parser should have mutation observers. ( ( 版)) http://html5.org/tools/web-apps-tracker?from=7483&to=7484

[16] Bug 16142 – Spec delivery semantics for MutationObservers ( ( 版)) https://www.w3.org/Bugs/Public/show_bug.cgi?id=16142

[17] Require one of childList, attributes, and characterData to be true after... · 4bf29a4 · whatwg/dom ( ( 版)) https://github.com/whatwg/dom/commit/4bf29a4ae4a1e5e4f1a5249f5fc7aa40d37b3f51

[18] 構文解析器の動作と MutationObserver の呼び出しタイミングの関係はブラウザーごとに全然違っているようです。

[22] Mark observe()'s dictionary argument as optional (annevk著, ) https://github.com/whatwg/dom/commit/e4f7faafddf5e57dd0ecfca36a0a798d82162320

[23] Clarify insert-node's record's previousSibling (bwrrp著, ) https://github.com/whatwg/dom/commit/d9cd30defeccb4b143913859e70c12a1da4bf55b

[24] Clarify insert-node's record's previousSibling by bwrrp · Pull Request #464 · whatwg/dom () https://github.com/whatwg/dom/pull/464

[25] Add [Exposed=Window] to MutationObserver (annevk著, ) https://github.com/whatwg/dom/commit/c9544325095195c3afdf6284c29b26e84ce572aa

[26] Add [Exposed=Window] to MutationObserver by annevk · Pull Request #507 · whatwg/dom () https://github.com/whatwg/dom/pull/507

[27] Hide `nonce` content attribute values. (#2369) by mikewest · Pull Request #2373 · whatwg/html () https://github.com/whatwg/html/pull/2373

[28] Editorial: use Infra to define mutation observers (annevk著, ) https://github.com/whatwg/dom/commit/50b3051320e9617e1b2ff899dfef6f8dc5255bdf

[29] Small correct for Mutation observers · Issue #132 · whatwg/dom () https://github.com/whatwg/dom/issues/132

[38] Use Infra to define mutation observers by annevk · Pull Request #609 · whatwg/dom () https://github.com/whatwg/dom/pull/609

[39] Use DOM's "replace all" primitive in document.open() (annevk著, ) https://github.com/whatwg/html/commit/423c66403522b09138dc3b366bf96111bc030a04

[40] Use DOM's "replace all" primitive in document.open() by annevk · Pull Request #3598 · whatwg/html () https://github.com/whatwg/html/pull/3598

[41] Edgeobserve メソッドのオプションに何も指定されていないとき SyntaxError投げます。

[42] Edgeobserve メソッドのオプションに attributeFilter が指定されて attributes が指定されていないとき、 SyntaxError投げます。

[43] Align with IDL dictionary changes (annevk著, ) https://github.com/whatwg/dom/commit/c15e65f193ab7561485606158c72f491c67f4b11

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

[45] Use Web IDL constructor operations by foolip · Pull Request #782 · whatwg/dom () https://github.com/whatwg/dom/pull/782

[46] Remove compound microtasks (annevk, , ) https://github.com/whatwg/dom/commit/7a8406bcb0332c1370f305c77565b7a3c069541d

[47] Dispatching slotchange within a compound microtask · Issue #734 · whatwg/dom () https://github.com/whatwg/dom/issues/734

[48] Remove compound microtasks by annevk · Pull Request #741 · whatwg/dom () https://github.com/whatwg/dom/pull/741

[49] Editorial: embrace that attributes are objects (annevk, , ) https://github.com/whatwg/dom/commit/0038d097f5cad2a7ffdbe75c234b58960aa320f6