2015-11-03 6 views
0

У меня есть программное обеспечение, которое фиксирует время для каждого нажатия клавиши. Я использую события keyup и keydown, чтобы получить как время нарастания, так и время простоя. Эти события имеют параметр timeStamp, который should be миллисекунд относительно эпохи. В Firefox это миллисекунды, но это слишком мало, чтобы быть с эпохи. Это работает корректно для меня в Chrome и Safari.События в клавиатуре Firefox имеют неправильные значения времениStamp

Вот фрагмент кода, я использую:

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 time, похоже, используется время начала системы.

Из определения W3 атрибута timeStamp:

В связи с тем, что некоторые системы могут не предоставлять эту информацию, значение timeStamp может быть доступна не для всех событий. Когда это невозможно, возвращается значение 0. Примерами времени эпохи являются время начала системы или 0: 0: 0 UTC 1 января 1970 года.

+0

Это действительно действительно сложно. Спасибо за ответ. – Pete

+0

Будущие версии DOM могут изменить это на [указать эпоху unix] (https://dom.spec.whatwg.org/#dom-event-timestamp). Но на данный момент было бы лучше использовать метод getTime() 'для объекта Date. – szupie

 Смежные вопросы

  • Нет связанных вопросов^_^