使用服务器时间的JavaScript倒数计时器

时间:2010-12-19 19:15:21

标签: javascript timer countdown

我正在尝试创建一个基于服务器上的时间的倒数计时器。

我最初让服务器设置了剩余的时间,并且只做了setTimeout 1秒,这会减少时间。

我发现了2个问题:

  1. 服务器设置时间延迟,直到呈现客户端页面并开始运行JavaScript。滞后量取决于用户互联网连接和计算机/ JavaScript引擎的速度。
  2. 我认为1秒的setTimeout可能会在较慢的计算机上落后一点。
  3. 我更改了它,因此服务器将设置结束时间,客户端上的JavaScript将花费时间(以UTC为单位)并计算剩余的剩余时间。然后它会在每个setTimeout回调上执行此操作。这使得时间和倒计时变得完美。如果客户端具有快速计算机/ JavaScript引擎,则计时器将保留在页面上。如果计算机/ JavaScript引擎速度较慢,您可能会看到第二个被忽略,但时间永远不会关闭。

    到目前为止,我发现此方法存在1个问题:

    1. 每个客户的时钟可能不同。
    2. 因此,如果客户端的计算机时间不正确,剩下的时间可能是几秒钟,30秒甚至几天。

      根据服务器的结束日期,有没有办法可以让时间保持准确?

1 个答案:

答案 0 :(得分:0)

我不知道您需要什么样的分辨率,但考虑到网络和页面渲染延迟,将客户端 - 服务器协议变得比一秒钟好得多。我建议你每隔5或10秒进行一次ajax调查,并相应地调整你的计时器。还有comet基本上是“反向”ajax,它可以将时间推向客户端。但无论哪种方式,您仍然需要网络和渲染等待延迟。