这很可能是由于最近(从49版开始)更改为 Chrome和Opera中的Event.timeStamp.这些浏览器返回a DOMHighResTimeStamp
而不是DOMTimeStamp
表示该值不再是纪元时间值,不应转换或与Date值进行比较.
顺便说一下,代码片段在Firefox中从未起作用,因为它没有返回点击事件的纪元时间戳.
我建议阅读上面的文章.但总的来说,Event.timeStamp
浏览器和事件类型的行为是不同的,并且在某些浏览器中它也可能受到NTP时间偏差的影响.所以正确使用它是相当棘手的.
如果你想要发生一个事件的纪元时间实例,那么只使用Date.now()
内部处理程序是最安全的.它会丢失一些处理时间,但对于许多用例来说它是可以接受的:
$('li').on('click', function(e) {
var clicked = (new Date()).toDateString();
$(this).append('' + clicked + ' ' + e.type + '');
});
但是,大多数用例实际上需要测量事件发生的时间与另一个时间点之间的时间.在那种情况下,我建议使用performance.now()
哪个是高分辨率的单调时钟.
var startTime = performance.now();
$('li').on('click', function(e) {
var delta = performance.now() - startTime;
$(this).append('' + delta + ' ms ago, ' + e.type + '');
});