DHTML:イベント・インターフェース
編集:2017.06.28 20:55 by T.A.
→
MS
MutationEvent
インターフェース
廃止予定
この機能はWeb標準から削除されました。まだ一部のブラウザでサポートされている場合もありますが、それは落とされる過程にある。可能であれば、それを使用したり、既存のコードを更新したりしないでください。このページの下部にある
互換性表
を参照して決定を導きます。この機能はいつでも機能しなくなる可能性があることに注意してください。
ドキュメント・オブジェクト・モデル(DOM)階層ノードの変更に固有のイベントのプロパティを提供します。
Note:
突然変異イベント(W3C DOMレベル3イベント)は、
変異オブザーバー
(W3C DOM4)を支持して非難されました。
序文
突然変異イベントは、
DOM Events仕様
で非推奨とマークされていますが、APIの設計に欠陥があるため(「DOM突然変異イベントの置き換え:→
パブリック・ウェブ・アプリケーション
への投稿」を参照)。
突然変異観察者
は、DOM4の突然変異イベントの代替候補である。それらはFirefox 14とChrome18に含まれる予定です。
変異イベントを避けるための実際的な理由は、パフォーマンスの問題とクロスブラウザのサポートです。
業績
DOM mutationリスナーをドキュメントに追加すると、そのドキュメントに対するDOM変更のパフォーマンスが大幅に低下します(それらを1.5〜7倍遅くする!)。さらに、リスナーを削除してもダメージは元に戻りません。
業績効果は、突然変異イベント・リスナーを持つ文書に限定されます。
クロス・ブラウザー・サポート
これらのイベントは、さまざまなブラウザ間で一貫して実装されていません:
バージョン9より前のIEは、突然変異イベントをまったくサポートしておらず、バージョン9ではそれらの一部を正しく実装していません(
例えば、DOMNodeInserted
)
WebKitはDOMAttrModifiedをサポートしていません(
webkitバグ8191
と
回避策
を参照)
「mutation name events」、つまりDOMElementNameChangedとDOMAttributeNameChangedはFirefoxではサポートされていません(バージョン11以降)。おそらく他のブラウザでも同様です。
…
Dottoro→
突然変異イベントのためのブラウザー・サポート
。
突然変異イベント一覧
以下はすべての突然変異事象のリストであり、
DOMレベル3イベント仕様
で定義されているとおり:
DOMAttrModified
DOMAttributeNameChanged
DOMCharacterDataModified
DOMElementNameChanged
DOMNodeInserted
DOMNodeInsertedIntoDocument
DOMNodeRemoved
DOMNodeRemovedFromDocument
DOMSubtreeModified
使用法
次のように、element.addEventListenerを使用して、突然変異イベントのリスナーを登録できます:
element.addEventListener("DOMNodeInserted", function (ev) { // ... }, false);
ほとんどのイベントでは、イベントオブジェクトはMutationEvent(→
仕様におけるその定義
)のリスナーに渡され、DOMAttributeNameChangedおよびDOMElementNameChangedの場合は
MutationNameEvent
です。