[英]Prevent timer from stopping when window is inactive Javascript
Helllo,我正在制作測驗應用程序,並想設置一個計時器。 我想用Java語言制作。 這是我的功能:
function countDown(sec, elem) {
_(elem).innerHTML = sec;
if(sec < 1) {
clearTimeout(timer);
endGame ();
return;
}
sec--;
var timer = setTimeout('countDown('+sec+',"'+elem+'")',1000);
}
問題是,例如,對於移動式Saffari瀏覽器,當您將手指放在屏幕上(例如滾動效果)時,計時器會停止,但您仍然可以看到問題……因此,基本上,您可以無限時間。 我怎樣才能使計時器運行nomatter?
先感謝您!
您不能讓時間“無論如何”運行-在觸摸事件期間,Mobile Safari不會運行setTimeout和setInterval函數調用。 實際上,在iOS6之前,事件被完全丟棄。
您應該改為使用Date構造函數進行完整性檢查,並執行服務器端驗證。 如果有人真的想作弊,他們畢竟可以在客戶端上修改您的JavaScript。
每當計時器事件觸發時,您始終可以檢查Date
。 就像是:
var timerStart = function(timeLimit) {
var remaining = timeLimit, h, m, s;
var startTime = +new Date();/*Date.now();*/
var instance = function() {
if (remaining > 0) {
remaining = timeLimit - ((+new Date()) - startTime);
h = Math.floor(remaining / 3600000);
m = Math.floor(remaining % 3600000 / 60000);
s = Math.floor(remaining % 3600000 % 60000 / 1000);
window.setTimeout(instance, 1000);
} else {
/* do whatever you need to do when time is up */
}
}
instance();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.