17

我正在阅读此http://lists.w3.org/Archives/Public/public-webapps/2011JulSep/1622.html似乎 Chrome 的行为与规范形成对比。如果我正确理解规范,为元素定义“子树”意味着应该报告对该元素的子树(包括元素本身)的更改。但是,在执行这段代码时,我什么也得不到。

var observer = new WebKitMutationObserver(function(e){console.log(e);})
observer.observe(document.body, {subtree:true, attributes:true});
document.body.appendChild(document.createElement('div'));

我错过了什么?有人可以详细说明一下吗?谢谢!

4

3 回答 3

22

文档不清楚,但subtree除非您还指定childList:true.

attributes和的情况attributeFilter是一样的。

希望它仍然有帮助。

于 2012-05-23T12:25:12.340 回答
9

根据这篇文章

childList:如果要观察目标节点的子元素(包括文本节点)的添加和删除,则设置为 true。

subtree:如果不仅要观察目标的突变,还要观察目标的后代,则设置为 true。

这也解释了取决于childList的子树

于 2018-06-13T21:03:52.063 回答
2

mutationObserverconfig 中,至少需要设置attributescharacterData或之一。childListtrue

现在,如果您只设置childList: true,那么它将仅观察目标元素的直接子元素(深度 1),而不是完整的子树。

要观察完整的子树childListsubtree需要设置和true

例如

{
   childList: true,
   subtree: true
}

我希望,它是有帮助的。

于 2020-08-10T10:23:22.620 回答