【问题标题】:JavaScript alert() advancing system time by 12msJavaScript alert() 将系统时间提前 12 毫秒
【发布时间】:2025-12-21 01:15:12
【问题描述】:

这是一个奇怪的:

我正在努力将 JavaScript 计时器与远程服务器同步,并注意到我的计时器(基于 Date() 对象)在每次页面刷新时相对于我的远程服务器增加了大约 12 毫秒。我将其缩小到 JavaScript alert() 函数。

我创建了以下测试并使用 2 个同步时钟验证了我的系统时间每刷新 83-84 次页面就会提前 1 秒。有人见过这个吗?

<html>
<head>
</head>
<body>
<script type="text/javascript">
  alert('hello');
</script>
</body>
</html>

我在 XP SP3 上使用 IE7。请告诉我,我不只是疯了!


编辑:

我真的不关心 javascript 计时器的准确性。真正的问题是 JavaScript alert() 函数调用将我的实际系统时间提前了 12 毫秒。

【问题讨论】:

  • 在闪电风暴期间尝试刷新 88 次。
  • 刚刚尝试过这个(IE7、XP SP3),令我惊讶的是,得到了相同的结果——每次警报都会提前系统时间。不确定它是否与 OP 的数量相同,因为我没有计算刷新,但它肯定会进步。
  • 你怎么知道是系统时钟在前进,而不是宇宙的其他部分在失去时间?
  • @Jason:可能是 javascript 警报导致我的计算机接近光速?
  • 您是否尝试过同步时钟,然后,实际上什么都不做,或者至少像平常一样浏览它,然后测试它们有多远同步? (你知道,作为一个控件。)

标签: javascript alert


【解决方案1】:

嗯,

您很可能是疯了,因为准确地说,您指望 JavaScript 计时器。

这解释了很多:http://ejohn.org/blog/accuracy-of-javascript-time/

【讨论】:

  • 但是 OP 声称他的 系统时间 被改变了。这是另一回事,不是吗?
  • 我所说的不是我的 javascript 计时器的延迟——我的实际系统时间正在被 alert() 函数的执行所修改。我已经刷新了这个页面几百次,现在当我拉起我的系统时钟时,它比我刚刚与我的系统同步的手表提前了 5 秒。
  • @Derek:我一直都知道 JavaScript 是邪恶的;)(很抱歉没有提供更有用的评论)。