我注意到,当我单击站点上的一个元素时,Firebug 在事件处理程序中将 e.timeStamp 报告为 9 位数字,例如 866523917,当我单击另一个元素时,Firebug 在该处理程序中将 e.timeStamp 报告为一个 16 位数字,例如 1376344365954000。为什么会有差异?
谢谢
我注意到,当我单击站点上的一个元素时,Firebug 在事件处理程序中将 e.timeStamp 报告为 9 位数字,例如 866523917,当我单击另一个元素时,Firebug 在该处理程序中将 e.timeStamp 报告为一个 16 位数字,例如 1376344365954000。为什么会有差异?
谢谢
正如标准中定义的那样, timeStamp
返回自纪元以来的毫秒数:
用于指定创建事件的时间(相对于纪元的毫秒数)。由于某些系统可能不提供此信息,timeStamp 的值可能不适用于所有事件。当不可用时,将返回值 0。
但是,对于 epoch 没有严格的定义:
纪元时间的示例是系统启动时间或 1970 年 1 月 1 日 0:0:0 UTC。
一些事件使用第一个变体(系统启动),而其他事件使用 1970 年以来的时间。因此存在差异。作为旁注,timeStamp
某些事件可能根本没有提供,那么它的值将是0
.
我认为问题出在火狐上。我在 Safari 和 Chrome 上得到了更大的数字(13 位加 3 个零),我遇到了一些说 Firefox 有错误的文章:http: //bugs.jquery.com/ticket/10755。一篇文章建议它可能会报告自上次重新启动以来的时间。
我仍然不明白为什么 Firefox 会以一种方式报告一个中断,而以另一种方式报告另一个中断。出于我的目的,我将只使用 timestamp=Date.now() 而不是 e.timestamp。这似乎在任何中断时都是一致的。
相反event.timestamp
,使用Date.now()