【发布时间】:2015-01-16 20:52:56
【问题描述】:
我正在开发一个记录时间的计时器。因为我现在使用 java 脚本的 setInterval 方法,问题是如果选项卡处于非活动状态,它就不能正常工作。
一个解决方案我必须存储旧时间并从新时间中减去一个问题,如果在启动计时器后如果用户更改系统时间那么它会影响我的计时器。如果有任何其他可能的方法或解决方案,请告诉我。
timerInterval = setInterval(function() {
seconds=seconds+1;
if(seconds==60)
{
minutes=minutes+1;
if(minutes==60)
{
minutes=0;
hours=hours+1;
}
$("#task"+aData['taskId']).html(("0" + hours).slice(-2)+":"+("0" + minutes).slice(-2));
seconds=0;
}
},1000);
【问题讨论】:
-
请分享您的代码
-
用户更改他的系统时间应该很少见,但是时区可能会因夏令时或旅行而改变。我建议您使用 UTC 日期对象来跟踪偏移量。
-
除了轮询您自己的服务器之外,没有其他方法可以确定时间,这意味着一个 ajax 请求。经常。您遇到的问题是
window.blur()问题 - 当窗口没有聚焦时,大多数浏览器会尝试通过此时不执行 javascript 来节省资源。但它可能会堆积起来然后快速执行javascript。现在,只轮询用户计算机的时间并不是一个坏主意,除非时间真的是人们想要欺骗的唯一东西,因为人们实际上并没有改变他们的计算机时间。您可以将用户时间用作参考... -
这个问题多发生在google chrome
标签: javascript jquery html setinterval browser-tab