Pro*_*Pus 2 javascript jquery events timestamp
我正在做练习,但是e.timestamp返回最初返回"-xxxx"值,所以date.toDateString总是返回"Thu Jan 01 1970 click".我也在w3schools寻找答案,但它的解决方案也不起作用!我无法理解为什么TT_____TT
我使用的是Chrome的最新版本!
此代码适用于Microsoft Edge.我如何才能实现普及?
感谢你们 :)
$(function() {
$('li').on('click', function(e) {
$('li span').remove();
var date = new Date();
date.setTime(e.timeStamp);
var clicked = date.toDateString();
$(this).append('<span class="date">' + clicked + ' ' + e.type + '</span>');
});
});
Run Code Online (Sandbox Code Playgroud)
小智 6
这很可能是由于最近(从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('<span class="date">' + clicked + ' ' + e.type + '</span>');
});
Run Code Online (Sandbox Code Playgroud)
但是,大多数用例实际上需要测量事件发生的时间与另一个时间点之间的时间.在那种情况下,我建议使用performance.now()哪个是高分辨率的单调时钟.
var startTime = performance.now();
$('li').on('click', function(e) {
var delta = performance.now() - startTime;
$(this).append('<span class="date">' + delta + ' ms ago, ' + e.type + '</span>');
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
592 次 |
| 最近记录: |