0

私は答えを探してみましたが、これが私の最初の投稿です。

基本的に私の問題は次のとおりです。jQuery を使用する Chrome の拡張機能を作成しています。$.ajax() リクエストを 10 秒ごとに行う別の拡張機能があります。時間指定された ajax リクエストとそのコールバック関数が完了するたびにコードを実行する方法を見つける必要があります。自分のスクリプトのタイマーを設定することはできますが、それはかなり中途半端で、うまく機能しません。

問題は次のように説明できます。

//extension 1
function timedFunc() {
   setTimeout(doStuff, 10000);
};
timedFunc();

//extension 2
//code to be run every time doStuff completes

この問題には非常に基本的な解決策があるように感じますが、助けていただければ幸いです。

4

2 に答える 2

0

というイベントがあります(ありました)DOMSubtreeModified。しかし、これは推奨されていないため、現時点では回避策しかありません。

DOMSubtreeModified イベントが DOM レベル 3 で廃止されたのはなぜですか?

このイベントはすべてのブラウザーに実装されているわけではないため、このイベントの使用についてアドバイスすることはできません。

しかし、(簡単に) できることは、すべての ajax 呼び出しで独自のイベントをトリガーすることです!

例:

(任意の)ajax呼び出しが完了したときにイベントを発生させます:

$(document).ajaxComplete(function() {
   $(document).trigger('domChanged');
}

そしてそれを聞いてください:

$(document).on('domChanged',function() {
   alert("i changed the DOM tree!");
});

ところで:

完了している ajax 呼び出しに反応したいだけだと考えてください... .ajaxComplete() イベントを使用するだけです:

http://api.jquery.com/ajaxComplete/

于 2012-09-15T23:50:10.520 に答える
0

私はあなたが言おうとしていることを本当に理解していませんでしたが、タイトルのあなたの質問は理解できたので、ここに私の控えめな答えがあります:

// a global variable for the documents content
var content=document.documentElement.innerHTML;

// return true if the document content has changed
function documentChanged(){
return content==document.documentElement.innerHTML;
}
于 2012-09-15T23:51:14.193 に答える