2017-12-26 19 views
0

jQueryタイマーを作成しようとしていますが、ブラウザのフォーカスが合っていないか、最小化されていないと停止します。私の考えの1つは、Ajaxを使用してサーバーからデータを引き出し、タイマーを更新するコードですが、サーバーの負荷が高くなる可能性があります。ユーザがフロントエンドでブラウザを使用しているかどうかをチェックする方法はありますか?コードはAjaxリクエストを送信する必要があります。ユーザーがブラウザを使用していないと、jQueryタイマーが停止する

私のjQueryタイマーコードスニペット。

(function timer (offset) { 
    setTimeout(function() { 
     var timestamp = {{ time }}; 
     timestamp = 5 * 60 - timestamp - offset; 
     var minutes = Math.floor(timestamp/60); 
     var seconds = Math.floor(timestamp % 60); 
     document.getElementById("timer").innerHTML = minutes + " : " + seconds; 
     timer(offset + 0.5); 
    }, 500); 
})(0); 
+0

あなたは[jquery.idle](https://github.com/kidh0/jquery.idle)をチェックすることができます – Satpal

+0

ちょうど経過時間を示すタイマーを作成しようとしていますか? – AuxTaco

+0

@AuxTacoはい、残っている時間を表示します。 –

答えて

1

window.setTimeoutdelayパラメータは、コールバックを実行する前not a guaranteed time時間の最小量です。タイムアウトで実行中の合計時間を維持する代わりに、タイマーの開始時間を格納し、現在の時間と比較します。 Performance.now()は、正確なタイムスタンプをミリ秒単位で表示します。

関連する問題