特定のDOM要素の子のいずれかで属性の変更を監視する必要があります。今のところ、私はmutation eventsを使っています。DOMの変更を監視する、エレガントな方法
問題は - バグだった。クロムの下でDOMAttrModified
は発射されなかったが、DOMSubtreeModified
はあった。問題は簡単に解決できました。他のイベントが発生した場合はDOMSubtreeModified
が発生するため、DOMSubtreeModified
を聞いただけです。
とにかく、最近のバージョンでは、属性が変更された場合、Chromiumは何も実行を停止しました。
ただし、新しいMutation Observer APIは問題なく動作します。
これまでは、特定の要素のサブツリーを変更したときにコールバックを行うだけで済みました。他のものは変更されていないため、私は突然変異イベントを使用して問題を解決しました。& )を同じコードで使用します。
しかし、今私は(削除したノード上の例えば新しいノード上で、)イベントのより強力なフィルタリングを行う必要がある - そうはエレガントな使用に私をできるようになること、おそらくjQueryのプラグイン、ライブラリがありますこれらのAPIのと利用可能な場合は、変異イベントをフォールバックとして特定のイベントタイプをフィルタリングする機能(たとえば、要素の追加、属性の変更など)。
など。
$("#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){})
、それが唯一の新しいAPIをサポートしています。http://code.google.com/p/mutation-summary/ 。私はまた、あなたが求めているものの単純なバージョンであると思われるこれを見つけました:http://stackoverflow.com/questions/10868104/can-you-have-a-javascript-hook-trigger-after-a- dom-elements-style-object-change – thirtydot
私も突然変異サマリを見つけましたが、フォールバックとして突然変異イベントをサポートしていません。 あなたが投稿したスレッドの最初の答えは、基本的に私のコードで属性の変化を観察するために行うことです。 同じ原理で、変異観察者と(フォールバックとして)イベントの両方を使用して特定のDOMイベントを監視できるライブラリを構築できます。それが私の必要なものです。 – Ivo
+1:私は本当に「ベストプラクティス」の質問を掘り下げます。 –