2015-11-03 66 views
0

我有一些软件可以捕获每次击键的时间。我正在使用keyup和​​事件来获取上升和下降时间。这些事件有一个参数,timeStamp,其中should be毫秒相对于纪元。在Firefox上,这是毫秒级的,但从时代来看它太小了。这对Chrome和Safari浏览器正常运行。Firefox键盘事件的时间戳值不正确

下面是我使用的代码片段:

function keyDownHandler(event) { 
    var key = event.which, 
     when = event.timeStamp; 
    ... 
} 

function keyUpHandler(event) { 
    var key = event.which, 
     when = event.timeStamp; 
    ... 
} 

$(element).keydown(keyDownHandler); 
$(element).keyup(keyUpHandler); 

我在这里失去了一些东西?一个简单的重现方法是查看JQuery的页面keyup并键入他们的演示。使用Chrome和Safari时,返回的timeStamp值为1446582863442,但在Firefox中为2444770694.

回答

0

这是open issue from 2004,也会影响其他事件。问题在于Firefox正在使用different epoch time;而不是unix E poch时间,它似乎是使用系统启动时间。

timeStamp属性的W3定义:

由于这样的事实,有些系统不能提供此信息的timeStamp值可能并不适用于所有的事件。当不可用时,将返回值0。具有划时代的时间例子是系统启动或0时0:0 UTC 1月1日1970年

+0

,真正使这真的是难以用,然后。感谢您的回应。 – Pete

+0

DOM的未来版本可能会将此更改为[指定unix时代](https://dom.spec.whatwg.org/#dom-event-timestamp)。但是现在,在'Date'对象上使用'getTime()'方法会更好。 – szupie