MutationEvent
{{APIRef("UI Events")}} {{Deprecated_Header}} {{non-standard_header}}
The MutationEvent interface provides event properties that are specific to modifications to the Document Object Model (DOM) hierarchy and nodes.
[!NOTE] Using mutation events is problematic:
- Their design is flawed.
- Adding DOM mutation listeners to a document profoundly degrades the performance of further DOM modifications to that document (making them 1.5 - 7 times slower!). Moreover, removing the listeners does not reverse the damage.
- They have poor cross-browser compatibility: Safari doesn’t support
DOMAttrModified(see WebKit bug 8191) and Firefox doesn’t support mutation name events (likeDOMElementNameChangedandDOMAttributeNameChanged).They have been deprecated in favor of mutation observers. Consider using these instead.
{{InheritanceDiagram}}
Instance properties
This interface also inherits properties from its parent {{domxref("UIEvent")}} , and indirectly from {{domxref("Event")}} .
{{domxref("MutationEvent.attrChange")}}{{ReadOnlyInline}}{{Deprecated_Inline}}{{non-standard_inline}}- : Indicates what kind of change triggered the
DOMAttrModifiedevent. It can beMODIFICATION(1),ADDITION(2) orREMOVAL(3). It has no meaning for other events and is then set to0.
- : Indicates what kind of change triggered the
{{domxref("MutationEvent.attrName")}}{{ReadOnlyInline}}{{Deprecated_Inline}}{{non-standard_inline}}- : Indicates the name of the node affected by the
DOMAttrModifiedevent. It has no meaning for other events and is then set to the empty string ("").
- : Indicates the name of the node affected by the
{{domxref("MutationEvent.newValue")}}{{ReadOnlyInline}}{{Deprecated_Inline}}{{non-standard_inline}}- : In
DOMAttrModifiedevents, contains the new value of the modified{{domxref("Attr")}}node. InDOMCharacterDataModifiedevents, contains the new value of the modified{{domxref("CharacterData")}}node. In all other cases, returns the empty string ("").
- : In
{{domxref("MutationEvent.prevValue")}}{{ReadOnlyInline}}{{Deprecated_Inline}}{{non-standard_inline}}- : In
DOMAttrModifiedevents, contains the previous value of the modified{{domxref("Attr")}}node. InDOMCharacterDataModifiedevents, contains previous new value of the modified{{domxref("CharacterData")}}node. In all other cases, returns the empty string ("").
- : In
{{domxref("MutationEvent.relatedNode")}}{{ReadOnlyInline}}{{Deprecated_Inline}}{{non-standard_inline}}- : Indicates the node related to the event, like the changed node inside the subtree for
DOMSubtreeModified.
- : Indicates the node related to the event, like the changed node inside the subtree for
Instance methods
{{domxref("MutationEvent.initMutationEvent()")}}{{Deprecated_Inline}}{{non-standard_inline}}- : Constructor method that returns a new
MutationEventconfigured with the parameters given.
- : Constructor method that returns a new
Mutation events list
The following is a list of all mutation events:
DOMAttrModified(Not supported by Safari)DOMAttributeNameChanged(Not supported by Firefox)DOMCharacterDataModifiedDOMElementNameChanged(Not supported by Firefox)DOMNodeInsertedDOMNodeInsertedIntoDocumentDOMNodeRemovedDOMNodeRemovedFromDocumentDOMSubtreeModified
Examples
You can register a listener for mutation events using {{DOMxRef("EventTarget.addEventListener()")}} as follows:
element.addEventListener("DOMNodeInserted", (event) => {
// …
});
Specifications
{{Specifications}}
Browser compatibility
{{Compat}}
See also
{{DOMxRef("MutationObserver")}}