jQuery/javascript event.timestamp不起作用
jQuery/javascript event.timestamp doesnt work
我正在做一个练习,但e.timestamp返回最初返回"-xxxx"值,所以date.toDateString总是返回"1970年1月1日星期四点击"。我也在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>');
});
});
这很可能是由于Chrome和Opera中最近(自版本49以来)对Event.timeStamp进行了更改。这些浏览器返回的是DOMHighResTimeStamp
而不是DOMTimeStamp
,这意味着该值不再是epoch时间值,不应转换或与Date值进行比较。
顺便说一句,这个代码片段从未在Firefox中工作过,因为它不会为点击事件返回epoch时间戳。
我建议阅读上面的文章。但总的来说,Event.timeStamp
的行为在浏览器和事件类型之间是不同的,在某些浏览器中也可能受到NTP时间偏移的影响。因此,正确使用它相当棘手。
如果您想要事件发生的epoch时间实例,那么只在处理程序中使用Date.now()
是最安全的。它损失了一些处理时间,但对于许多用例来说是可以接受的:
$('li').on('click', function(e) {
var clicked = (new Date()).toDateString();
$(this).append('<span class="date">' + clicked + ' ' + e.type + '</span>');
});
然而,大多数用例实际上需要测量事件发生与另一个时间点之间的时间。在这种情况下,我建议使用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>');
});
相关文章:
- electronic BrowserWindow的最小高度和宽度在hide()show()方法之后不起作用
- 监视函数从服务返回不起作用,但作用域函数起作用
- 幻灯片滚动javascript不起作用
- 简单的javascript在Shopify中不起作用
- Recaptcha在IE7和IE8中不起作用
- Ember Data DS.Model's set函数不起作用
- JsFiddle上的鼠标事件不起作用
- 我的AngularJS表达式没有'不起作用
- 点击按钮输入不起作用
- 面向对象的Javascript代码在IE7中不起作用
- 分部隐藏在jquery中不起作用
- 在phonegap应用程序内部重定向不起作用
- Array.length似乎不起作用;console.log则显示其他情况
- $ionicplatform内的$scope不;不起作用
- 我的javascript for循环不起作用
- Meteor-添加用户自定义字段的方法不起作用
- 为什么 .focus() 不起作用,而 .css(“color”,“red”) 在同一个选择器上起作用
- Textarea必需的attribut在javascript中不起作用
- 为什么javascript:void(0)在Firefox中不起作用
- jQuery/javascript event.timestamp不起作用