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に設定します。

サブツリー:ターゲットだけでなく、ターゲットの子孫への突然変異も観察される場合は、trueに設定します。

これは、 childListに依存するサブツリーについても説明します。

于 2018-06-13T21:03:52.063 に答える
2

構成では、、、、またはmutationObserverの少なくとも1つを設定する必要があります。attributescharacterDatachildListtrue

ここで、を設定childList: trueした場合、完全なサブツリーではなく、ターゲット要素の直接の子(深さ1)のみが監視されます。

完全なサブツリーを観察するには、両方childListsubtree設定する必要がありますtrue

例えば

{
   childList: true,
   subtree: true
}

お役に立てば幸いです。

于 2020-08-10T10:23:22.620 に答える