特定の DOM 要素の子の属性の変更を監視する必要があります。これまで、ミューテーション イベントを使用してきました。
問題は、バグが多かったことです。たとえば、Chromium では、DOMAttrModified
起動されませんでしたが、起動DOMSubtreeModified
されました。この問題は簡単に解決できました。仕様によるとDOMSubtreeModified
、他のイベントのいずれかが発生した場合に が発生するため、DOMSubtreeModified
.
とにかく、最近のバージョンの Chromium では、属性が変更された場合、何も起動しなくなりました。
ただし、新しいMutation Observer APIは問題なく動作します。
これまでは、特定の要素のサブツリーが変更されたときにコールバックを起動するだけで済みました。これは、他に何も変更する必要がないためです。そのため、突然変異イベントと突然変異オブザーバー (利用可能な場合) を同じで使用するだけで問題を解決しました。コードの一部。
ただし、イベントのより強力なフィルタリングを行う必要があります (たとえば、新しいノード、削除されたノードなど) -これらの API の両方をエレガントに使用できるようにするライブラリ (おそらく jQuery プラグイン) がありますか?特定のイベント タイプ (要素の追加、属性の変更など) をフィルタリングする機能を備えた、フォールバックとしての利用可能および突然変異イベント。MutationObserver
例えば
$("#test").watch({onNewElement: 1}, function(newElement){})
$("#test").watch({onNewAttribute: 1}, function(modifiedElement) {})
またはjQueryなし
watchChanges("#test", {onNewElement: 1}, function(newElement){})
watchChanges("#test", {onNewAttribute: 1}, function(modifiedElement){})