MutationEvent

已弃用:此特性不再推荐。虽然某些浏览器可能仍然支持它,但它可能已经从相关的网络标准中删除,可能正在删除过程中,或者可能仅为兼容性目的而保留。请避免使用它,如果可能,请更新现有代码;请参阅本页底部的兼容性表格以指导您的决策。请注意,此特性可能随时停止工作。

非标准:此特性未标准化。我们不建议在生产环境中使用非标准特性,因为它们浏览器支持有限,并且可能会更改或被移除。但是,在没有标准选项的特定情况下,它们可以是合适的替代方案。

MutationEvent 接口提供了特定于修改文档对象模型(DOM)层级和节点的事件属性。

注意: 使用变异事件是有问题的

  • 它们的 设计存在缺陷
  • 向文档添加 DOM 变异监听器会 严重降低该文档后续 DOM 修改的性能(使其变慢 1.5 - 7 倍!)。此外,移除监听器也无法逆转这种损害。
  • 它们的跨浏览器兼容性很差:Safari 不支持 DOMAttrModified(参见 WebKit Bug 8191),而 Firefox 不支持变异名称事件(如 DOMElementNameChangedDOMAttributeNameChanged)。

它们已被弃用,取而代之的是 MutationObserver请考虑改用它们。

实例属性

此接口还继承了其父级 UIEvent 的属性,以及间接继承自 Event 的属性。

MutationEvent.attrChange 只读 已弃用 非标准

指示触发 DOMAttrModified 事件的更改类型。它可以是 MODIFICATION (1)、ADDITION (2) 或 REMOVAL (3)。对于其他事件,它没有意义,因此设置为 0

MutationEvent.attrName 只读 已弃用 非标准

指示受 DOMAttrModified 事件影响的节点名称。对于其他事件,它没有意义,因此设置为空字符串 ("")。

MutationEvent.newValue 只读 已弃用 非标准

DOMAttrModified 事件中,包含已修改的 Attr 节点的新值。在 DOMCharacterDataModified 事件中,包含已修改的 CharacterData 节点的新值。在所有其他情况下,返回空字符串 ("")。

MutationEvent.prevValue 只读 已弃用 非标准

DOMAttrModified 事件中,包含已修改的 Attr 节点的前一个值。在 DOMCharacterDataModified 事件中,包含已修改的 CharacterData 节点的前一个新值。在所有其他情况下,返回空字符串 ("")。

MutationEvent.relatedNode 只读 已弃用 非标准

指示与事件相关的节点,例如 DOMSubtreeModified 事件的子树中已更改的节点。

实例方法

MutationEvent.initMutationEvent() 已弃用 非标准

构造函数,用于返回一个使用给定参数配置的新 MutationEvent

变异事件列表

以下是所有变异事件的列表

  • DOMAttrModified (Safari 不支持)
  • DOMAttributeNameChanged (Firefox 不支持)
  • DOMCharacterDataModified
  • DOMElementNameChanged (Firefox 不支持)
  • DOMNodeInserted
  • DOMNodeInsertedIntoDocument
  • DOMNodeRemoved
  • DOMNodeRemovedFromDocument
  • DOMSubtreeModified

示例

您可以使用 EventTarget.addEventListener() 注册变异事件的监听器,如下所示:

js
element.addEventListener("DOMNodeInserted", (event) => {
  // …
});

规范

此特性似乎未在任何规范中定义。

浏览器兼容性

另见