摘要
- W3C 的 2012 年 DOM4 草案已定义变化观察者和记录队列;2015 年 DOM4 推荐标准明确把 Mutation Observers 作为 Mutation Events 的继任机制。
- 现行 DOM 规范允许作者选择监视子节点增删、属性或文字变化,也能延伸到子树。浏览器排队并在微任务中递送记录,组件作者决定如何更新自己的界面。
设想一个会议列表。网页先插入新会议卡片,接着修改另一张卡片的房间号,又移走已结束的一场。负责搜索索引的脚本要跟上这些动作。如果每一步都同步拉它出来报到,它看到的可能是家具还在半空中的房间。一包变化记录让它在这一轮整理后再清点。
W3C 2012 年 12 月 6 日的 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





