要約
- W3C の2012年 DOM4 草案は変更の観察者と記録キューを記述した。2015年の勧告は Mutation Observers を Mutation Events の後継と明記した。
- 現行 DOM では子ノード、属性、テキストの変更を選んで観察できる。ブラウザーは記録をキューに入れ、マイクロタスクでまとめて知らせる。受け取った後の更新は部品作者の仕事だ。
会議の一覧を想像しよう。新しい会議を一件追加し、別の会議の部屋番号を直し、終わった会議を消す。検索用の索引を管理する部品は、変更を知ってから自分の表を更新したい。家具を運ぶ途中で一脚ごとに呼び鈴が鳴れば、索引は片付いていない部屋を何度も見に来る。変更をまとめた便りのほうが仕事になる。
2012年12月6日の W3C DOM4 作業草案には、観察者と記録キュー、観察を止める操作や未配達の記録を取り出す操作がある。ブラウザーが会議の意味を知る必要はない。どのノードが変わり、誰がその種類の変更を希望したかを扱えばよい。W3C の DOM4 刊行履歴は、その草案が後の勧告へ続く文書の一つだったことを示す。
2015年11月19日の DOM4 勧告は、Mutation Observers が Mutation Events に代わると冒頭で宣言した。変更のたびに個別のイベントで呼び出す構造から、関心を登録した観察者のキューへ MutationRecord を置く構造へ移った。その後、複合マイクロタスクで観察者を知らせる。一連の編集で生じた複数の記録を、コールバックは同じ便として受け取れる。
受信する手紙は選べる。childList は子ノードの追加と削除、attributes は属性、characterData はテキストの変更に対応する。subtree を指定すれば対象の下のノードも見る。属性名を絞り、変更前の値を求めることもできる。会議一覧の部品は自分の担当区域だけを観察し、ページ全体の出来事に付き合わずに済む。
記録には変更の種類と対象がある。内容に応じて追加・削除されたノード、隣のノード、属性名や旧値も入る。索引を直すプログラムはその束を読んで、どの会議を更新するか決める。ブラウザーは封筒と配達時刻を用意する。受信した知らせの意味を判断するのは部品の作者だ。記録は指定した観察条件に沿って作られる。
現在の WHATWG DOM Living Standardも、観察者への通知をマイクロタスクに入れ、保留中の記録キューをコールバックへ渡す。takeRecords() は残った記録を直接受け取り、キューを空にする。disconnect() は観察を終え、待っている記録も片付ける。一覧をページから外すなら、その郵便受けも閉じられる。
W3C の刊行履歴では DOM4 のスナップショットが2020年に廃止された。観察者の現在の規則は生きた DOM 標準に残る。2012年と2015年の文書は交代の経緯を伝え、現行文書は今日の手順を伝える。共通の郵便路は小さい。何を購読し、届いた変更で何をするかは、各部品が決める。
会員向け解説
プロフィールの詳細
適切な会員レベルでログインすると、解説全文と出典メモをご覧いただけます。
Strategic Circle 限定
Strategic Circle
すべての読者に公開されています。参加してログインすると プロフィール解説 を閲覧できます。
Strategic Circle に参加Leadership Alliance 会員限定
Leadership Alliance
対象となる IP 資産の所有者・管理者向けです。ログインすると Leadership Alliance の解説を閲覧できます。
Leadership Alliance に参加





