0

多くの変更をトリガーするボタンを押した直後に、DOMに変更がない3秒後にアラートを表示するとします。

jQueryを介して取得したボタンの例:

$someButton.on('click',function(){
  setInterval(function(){
    if( noChangesSinceLastTime()){
      time += 100;  
    }
    else{
      time = 0;
    } 

    if( time == 3000){
      alert("3 seconds without changes!");
    }

  },100);
});

そのボタンのクリックイベントには、DOM操作のための一連の関数を実行する他のバインディングがあると想定します。

noChangesSinceLastTime()関数として何かを達成するにはどうすればよいですか?

私の特定の問題の詳細

ネットワーク内の多数の同時クライアントで動作するHTML+JS+CSSスライドショーがあります。

新しいクライアントが参加すると、他のクライアントが見ている現在のスライドの先頭に自動的に送信されます。

私がやりたいのは、現在のスライドの読み込みが完了した直後に、新しいクライアントを他のクライアントと同期するために必要なクリックをトリガーすることです(スライド内のすべてのクリックがアニメーションステップをトリガーし、ほとんどのスライドには複数のステップがあるため)。

JSスライドウェアにコールバックを追加することはできません。これは、私が作成したものではない難読化されたJSであるためです。

4

2 に答える 2

0

これは単なる擬似コードですが、次のようなものを試すことができます。

timer = setTimeout(function(){
   alert("3 seconds without changes!");
}, 3000);

if(/*some change happens*/) {
   clearTimeout(timer);
}
于 2013-01-07T19:14:16.637 に答える
0

すべてのDOMMutatationイベントをリッスンし、それらのいずれかがトリガーされた場合はフラグを設定できます。

次に、interval関数で、そのフラグをチェックして、必要なロジックを実行できます。=)。

よろしく、

于 2013-01-07T19:33:49.027 に答える