このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。

View in English Always switch to English

MutationEvent

Deprecated
To be removed

This feature is pending removal from browsers. Using it now may lead to broken functionality in future updates. Mutation events negatively impact performance and they were selected for removal from the web as part of Interop 2025.

Use the following features instead: MutationObserver.

MutationEvent インターフェイスは、 Document Object Model (DOM) の階層とノードの変更に特化したイベントプロパティを提供します。

メモ: mutation イベントを使用するのは問題があります。

  • 設計上の欠陥があります。
  • 文書に DOM の mutation リスナーを追加すると、その文書に対するその後の DOM 変更のパフォーマンスが著しく低下します(1.5 倍から 7 倍も遅くなります)。さらに、リスナーを削除してもダメージは元に戻りません。
  • クロスブラウザー互換性が低いです。 Safari は DOMAttrModified に対応しておらず(WebKit のバグ 8191 を参照)、Firefox は mutation name イベント(DOMElementNameChangedDOMAttributeNameChanged など)に対応していません。

これらは非推奨になり、変異オブザーバーに置き換えられました。こちらの使用を検討してください。

インスタンスプロパティ

このインターフェイスには親である 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) => {
    // …
  },
  false,
);

仕様書

この機能は、どの仕様書にも定義されていません。

ブラウザーの互換性

関連情報