1

您好,我正在制作一个测验应用程序,并想设置一个计时器。我想用Javascript制作它。这是我的功能:

function countDown(sec, elem) {
    _(elem).innerHTML = sec;
    if(sec < 1) {
        clearTimeout(timer);
        endGame ();
        return;
    }
    sec--;
    var timer = setTimeout('countDown('+sec+',"'+elem+'")',1000);
}

问题是,例如,对于移动 Saffari 浏览器,当您将手指放在屏幕上时(如滚动效果),计时器停止,但您仍然可以看到问题......所以,基本上,您可以无限时间。我怎样才能让计时器运行 nomatter 什么?

先感谢您!

4

2 回答 2

1

无论如何,您都无法让时间运行 - Mobile Safari 在触摸事件期间不会运行 setTimeout 和 setInterval 函数调用。事实上,在 iOS6 之前,事件是完全丢弃的。

您应该使用 Date 构造函数进行完整性检查,并执行服务器端验证。如果有人真的想作弊,他们毕竟可以在客户端修改你的 JavaScript。

于 2013-10-02T20:49:38.697 回答
0

您可以随时检查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();
}
于 2013-10-02T21:06:51.793 回答