Helllo,我正在制作一个测验应用程序,并希望设置一个计时器。我想用Javascript制作它。这是我的功能:
function countDown(sec, elem) {
_(elem).innerHTML = sec;
if(sec < 1) {
clearTimeout(timer);
endGame ();
return;
}
sec--;
var timer = setTimeout('countDown('+sec+',"'+elem+'")',1000);
}
问题在于,例如,对于移动Saffari浏览器,当您将手指放在屏幕上时(如滚动效果),计时器停止,但您仍然可以看到问题...所以,基本上,你可以有无限的时间。如何使计时器无法运行?
提前谢谢!
答案 0 :(得分:1)
您无法让时间“无论如何” - Mobile Safari在触摸事件期间不会运行setTimeout和setInterval函数调用。实际上,在iOS6之前,事件将完全丢弃。
您应该使用Date构造函数进行健全性检查,然后执行服务器端验证。如果有人真的想作弊,他们可以在客户端修改你的JavaScript。
答案 1 :(得分: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();
}