簡體   English   中英

防止計時器在窗口處於非活動狀態時停止計時

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM