JavaScript事件时间戳不一致

时间:2013-08-12 22:02:15

标签: javascript firefox

我注意到当我点击我网站上的一个元素时,事件处理程序中的Firebug将e.timeStamp报告为9位数字,如866523917,当我点击其他元素时,e.timeStamp会在该处理程序中报告由Firebug作为一个16位数字,如 1376344365954000.为什么不同?

由于

3 个答案:

答案 0 :(得分:5)

由于defined in standard timeStamp返回自纪元以来的毫秒数:

  

用于指定时间(相对于纪元的毫秒数)   事件的创建。由于某些系统可能不会   提供此信息时timeStamp的值可能不可用   对于所有活动。如果不可用,将返回值0。

然而,epoch没有严格的定义:

  

纪元时间的示例是系统启动的时间或0:0:0 UTC   1970年1月1日。

有些事件正在使用第一个变体(系统启动),而其他事件则使用自1970年以来的时间。因此存在差异。作为旁注,某些事件可能根本没有提供timeStamp,那么它的值将为0

答案 1 :(得分:0)

我认为问题是Firefox。我在Safari和Chrome上获得了更大的数字(13位加3个零),我看到一些文章说Firefox有一个错误:http://bugs.jquery.com/ticket/10755。一篇文章建议它可能报告自上次重启以来的时间。

我仍然不明白为什么Firefox会以一种方式报告一种中断,另一种方式报告另一种中断。为了我的目的,我只使用timestamp = Date.now()而不是e.timestamp。这似乎在任何中断都是一致的。

答案 2 :(得分:0)

取而代之的是event.timestamp,请使用Date.now()