55

DOMSubtreeModifiedイベントが非推奨になったのはなぜですか?代わりに何を使用する必要がありますか?

4

2 に答える 2

53

少し下にスクロールすると、次のように表示されます。

警告!このMutationEventインターフェイスはDOMレベル2イベントで導入されましたが、ユーザーエージェント間で完全かつ相互運用可能に実装されていません。さらに、インターフェースが設計どおりにパフォーマンスと実装の課題をもたらすという批判がありました。ミューテーションイベントが解決するユースケースに対処することを目的として、新しい仕様が開発中ですが、よりパフォーマンスの高い方法で行われます。したがって、この仕様では、レガシー動作の参照と完全性のためのミューテーションイベントについて説明していますが、MutationEventインターフェイスとインターフェイスの両方の使用は推奨されていませんMutationNameEvent

置換APIはミューテーションオブザーバーであり、DOMレベルXのすべての愚かさに取って代わるDOMLivingStandardで完全に指定されています。

于 2011-07-12T05:00:50.377 に答える
24

置き換えはミューテーションオブザーバーになると思います:https ://developer.mozilla.org/en-US/docs/Web/API/MutationObserver

var whatToObserve = {childList: true, attributes: true, subtree: true, attributeOldValue: true, attributeFilter: ['class', 'style']};
var mutationObserver = new MutationObserver(function(mutationRecords) {
  $.each(mutationRecords, function(index, mutationRecord) {
    if (mutationRecord.type === 'childList') {
      if (mutationRecord.addedNodes.length > 0) {
        //DOM node added, do something
      }
      else if (mutationRecord.removedNodes.length > 0) {
        //DOM node removed, do something
      }
    }
    else if (mutationRecord.type === 'attributes') {
      if (mutationRecord.attributeName === 'class') {
        //class changed, do something
      }
    }
  });
});
mutationObserver.observe(document.body, whatToObserve);
于 2013-09-23T22:58:40.603 に答える