Javascript 为什么在DOM级别3中不推荐使用DOMSubtreeModified事件?

Javascript 为什么在DOM级别3中不推荐使用DOMSubtreeModified事件?,javascript,dom,javascript-events,deprecated,dom3,Javascript,Dom,Javascript Events,Deprecated,Dom3,为什么DOMSubtreeModified事件以及我们应该使用什么来代替它?如果您看到: 警告!MutationEvent接口是在DOM级别2中引入的 事件,但尚未完全和可互操作地实现 跨用户代理。此外,也有批评认为 根据设计,接口引入了性能和实现 挑战。一个新的规范正在开发中,目的是 解决突变事件解决的用例,但更多 行为举止。因此,本规范描述了突变事件 用于参考遗留行为的完整性,但不推荐 使用MutationEvent界面和MutationNameEvent 接口 替换API是完全指定的,它取

为什么DOMSubtreeModified事件以及我们应该使用什么来代替它?

如果您看到:

警告!
MutationEvent
接口是在DOM级别2中引入的 事件,但尚未完全和可互操作地实现 跨用户代理。此外,也有批评认为 根据设计,接口引入了性能和实现 挑战。一个新的规范正在开发中,目的是 解决突变事件解决的用例,但更多 行为举止。因此,本规范描述了突变事件 用于参考遗留行为的完整性,但不推荐 使用
MutationEvent
界面和
MutationNameEvent
接口


替换API是完全指定的,它取代了所有DOM级别X的愚蠢。

我认为替换将是:


@TJ-无故障。上面的是DOMNodeRemovedFromDocument.:-)替换将在DOM级别4中出现,并且似乎在Chromium方面取得了一些进展。替换
MutationEvent
接口的一个伟大的技巧是。animationStart的问题是,它只适用于插入节点。不适用于节点删除、属性编辑或文本更改。它也是单节点,其中
domsubtreemedited
允许从根节点查看整个树。
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);