1

重複の可能性:
jQuery DOM 変更リスナーはありますか?
DOM オブジェクトのプロパティを監視するにはどうすればよいですか?

イベントを非入力型要素にバインドする方法はありますか? たとえば、 href 属性が変更されたときに発生するアンカー要素にイベントをバインドします。

4

3 に答える 3

3

DOM Mutation Observersはこれを行うことができますが、非常に新しく、執筆時点では十分にサポートされていません。

拡張機能などを作成していますか(つまり、DOMを変更するコードを制御していません)?これは、これらのイベントの最も一般的なユースケースの1つであり、DOMを変更するコードを制御しません。私は以前、Chromeでうまく機能したMutationSummaryでこれを使用しました。

DOMを変更するコードを制御する場合(つまり、独自のWebサイトで属性を自分で変更する場合)、属性を変更するときに独自のカスタムイベントを発生させることができます。

于 2012-12-10T17:17:01.757 に答える
3

click非入力要素 ( 、mousemoveなど)のすべての種類のイベントにハンドラーをバインドできます。ただし、属性が変更されたときに発生する(一貫したクロスブラウザー)イベントはありません(hrefリンク上の属性の例など)。bfavarelloが指摘したように、一部の属性 ( など) は二次的なものとしてsrcイベント ( など) を引き起こします。load

(属性の変更 [mutations] を含む、要素の"mutation" イベントに対する今は死んだ提案がありますが、広くサポートされることはありませんでした。より新しい提案がありますが、[まだ] 広くサポートされていません。)

もちろん、ポーリングを使用することもできます。古い値を保存し、(setTimeoutまたはを介し​​てsetInterval) 定期的にチェックして、変更されているかどうかを確認します。多くの要素をチェックしていて、それらをほぼ常にチェックする必要がない限り、これはパフォーマンスの問題である必要はありません。

于 2012-12-10T17:15:26.533 に答える
1

DomSubtreeModifiedリスナーを祖先に追加することも、使用しているブラウザーでサポートされている場合はDOMオブジェクトwatchのプロパティで使用することもできます。src

myImage.watch("src",function(id, oldval, newval){
    document.write("src changed!");
    return newval;    
});
于 2012-12-10T17:16:15.387 に答える