我已经修改了SO, provided by SLaks中的代码,因此即使用户更改了计算机上的时间,也可以使用它。
<div id="timer"></div>
的时间仍然显示自页面加载以来的实时时间(即使用户更改了计算机上的时间)。
当时间改变时,会出现警告(请参阅下面的代码)。 问题是:一旦时间改变,警报每秒出现无限次(但预计只有一次)。为什么会这样?
$(document).ready(function () {
var start = new Date;
var end = (new Date - start) / 1000;
setInterval(function () {
if (Math.abs(end - (new Date - start) / 1000 )>1) {
start = new Date - end * 1000;
alert(Math.abs(end - (new Date - start) / 1000 ));
}
end = (new Date - start) / 1000;
$('#timer').text(end + " Seconds");
}, 100);
});
答案 0 :(得分:2)
实际上非常简单 - 在消息框关闭之前,脚本执行暂停。关闭它时,计时器已经延迟,条件再次为真。您可以通过复制alert[...]
行来自行测试:如果您足够快地关闭第一条消息,则第二条消息将显示低于1的值。
只需用一些基于HTML的浮动窗口替换alert
,一切都会好的。