重複の可能性:
jQuery DOM 変更リスナーはありますか?
DOM オブジェクトのプロパティを監視するにはどうすればよいですか?
イベントを非入力型要素にバインドする方法はありますか? たとえば、 href 属性が変更されたときに発生するアンカー要素にイベントをバインドします。
重複の可能性:
jQuery DOM 変更リスナーはありますか?
DOM オブジェクトのプロパティを監視するにはどうすればよいですか?
イベントを非入力型要素にバインドする方法はありますか? たとえば、 href 属性が変更されたときに発生するアンカー要素にイベントをバインドします。
DOM Mutation Observersはこれを行うことができますが、非常に新しく、執筆時点では十分にサポートされていません。
拡張機能などを作成していますか(つまり、DOMを変更するコードを制御していません)?これは、これらのイベントの最も一般的なユースケースの1つであり、DOMを変更するコードを制御しません。私は以前、Chromeでうまく機能したMutationSummaryでこれを使用しました。
DOMを変更するコードを制御する場合(つまり、独自のWebサイトで属性を自分で変更する場合)、属性を変更するときに独自のカスタムイベントを発生させることができます。
click
非入力要素 ( 、mousemove
など)のすべての種類のイベントにハンドラーをバインドできます。ただし、属性が変更されたときに発生する(一貫したクロスブラウザー)イベントはありません(href
リンク上の属性の例など)。bfavarelloが指摘したように、一部の属性 ( など) は二次的なものとしてsrc
イベント ( など) を引き起こします。load
(属性の変更 [mutations] を含む、要素の"mutation" イベントに対する今は死んだ提案がありますが、広くサポートされることはありませんでした。より新しい提案がありますが、[まだ] 広くサポートされていません。)
もちろん、ポーリングを使用することもできます。古い値を保存し、(setTimeout
またはを介してsetInterval
) 定期的にチェックして、変更されているかどうかを確認します。多くの要素をチェックしていて、それらをほぼ常にチェックする必要がない限り、これはパフォーマンスの問題である必要はありません。
DomSubtreeModified
リスナーを祖先に追加することも、使用しているブラウザーでサポートされている場合はDOMオブジェクトwatch
のプロパティで使用することもできます。src
myImage.watch("src",function(id, oldval, newval){
document.write("src changed!");
return newval;
});