在javascript中获取自事件纪元以来的时间(毫秒)



我试图用javascript获取事件自epoch以来的时间(以毫秒为单位(,但当我执行时

alert('event at exactly' + event.timeStamp);

它打印800010000或更多范围内的数字。

毫秒,因为历元通常是像1519211809934这样的数字

我在这里错过了什么?如何正确地获取自epoch以来事件触发的确切时间的毫秒数?

好吧,event.timeStamp测量的是完全不同的东西:

此值是从开始经过的毫秒数在创建事件之前当前文档的生存期。

如果您想获得事件发生的确切时间,您应该将其值添加到performance.timeOrigin中。请注意,Safari不支持后者。

或者,您可以在应用程序的初始化阶段自行触发事件,然后将其timeStamp与Date.now()进行比较,并将差异用作文档的起点。如果存在显著的事件循环延迟,导致您担心的测量值之间存在差异,那么这可能会很有用。

请注意(根据评论判断(你可能仍然会有一些波动,因为一些浏览器往往对这些数据不太准确:

为了提供针对定时攻击和指纹识别的保护Event.timeStamp的精度可能会根据浏览器进行四舍五入设置。

在Firefox中,privacy.reduceTimerPrecision首选项由默认值,在Firefox 59中默认为20us;60分钟后是2ms。[…]

如果同时启用privacy.resistFingerprinting,精度将为100ms或privacy.resistFingerprinting.reduceTimerPrecision.microseconds的值,以较大的值为准

最新更新