博客有段时间没有更新了,简陋的界面一直为人所诟病,今天决定加点动态的挂件:时钟和消息框。

消息框前两天做好了,今天主要做钟表。

首先是遇到一个问题:时钟单独作为一个页面显示的时候IE,FF,Chrome均正常。但是用require将代码require进主页面后Chrome和FF无法正常工作,IE中表针形状错误。改来改去,不知道问题到底出在哪里。于是直接用iframe包含钟表的方式。解决了。

然后是时钟刷新问题,怎样控制表针每秒移动一个格呢?两种方法:
一,读取服务器时间,使用setInterval隔1000ms刷一次。
二,读取服务器时间,获取脚本载入时间。求时间差,每次刷新时取得当前系统时间并加上时间差。


首先我用了方法二,这种方法的缺点就是在钟表载入后不能修改系统时间,曾经尝试修改了次,IE随着时间的修改表针也移动了,Chrome在修改后表针照旧走,走半分种后就停住再也不动了。。用Chrome里的JavaScript调试器查看了下,系统时间修改后Chrome里Date方式得到的时间并没有随之改变。这可以解释为什么修改了系统时间表针不做相应移动。但走半分种就停住就不知道为什么了。好在一般没有人天天调时间玩,所以这也不是个问题。

然后又试了试方法一,由于setInterval的问题,间隔1000ms并不精确,使用Chrome和IE进行对比,每隔一分钟两者中的钟表要相差1秒。当然不同机器表现不同。总之这种方法计时是相当不准确的,解决方法就是间隔一段时间向服务器请求新的时间,但这样会增加服务器负载。后来研究了下其他网站的一些倒计时,大多是setInterval,这样的准确度是没有方法二高的,好在这些应用对时间精确度要求不高,有些误差也可以接受。这种方法不依赖于客户机时间,避免了一些兼容性问题和出现诡异结果的可能性。

最后选用了方法二。

把代码整理了下,上传。升级成功
分页: 1/1 第一页 1 最后页 [ 显示模式: 摘要 | 列表 ]