A propriedade timeStamp
da interface Event
indica a hora em que um determinado evento ocorreu.
Nas versões do Chrome anteriores à 49, esse valor de timeStamp
era
representado como um DOMTimeStamp
,
que era um número inteiro de milissegundos desde a
época do sistema,
muito semelhante ao valor retornado por
Date.now()
.
A partir do Chrome 49, timeStamp
é um
valor
DOMHighResTimeStamp
. Esse valor ainda é um número de milissegundos, mas com resolução de microssegundos, o que significa que o valor incluirá um componente decimal. Além disso,
em vez de o valor ser relativo à época, ele é relativo ao
PerformanceTiming.navigationStart
,
ou seja, o momento em que o usuário navegou até a página.
Os benefícios da precisão adicional dos carimbos de data/hora podem ser vistos nestes exemplos:
Considerações sobre vários navegadores e versões legadas
Se você já tem um código que compara valores de Event.timeStamp
de
dois eventos, não precisa ajustá-lo em conta da mudança para
DOMHighResTimeStamp
. Além disso, em navegadores compatíveis com DOMHighResTimeStamp
, seu código atual se beneficia da maior precisão de microssegundos, bem como do fato de que o DOMHighResTimeStamp
aumenta monotonicamente, independentemente das mudanças no relógio do sistema no meio da execução da página da Web.
Se, em vez de comparar dois valores de Event.timeStamp
, seu código
precisar determinar há quanto tempo um evento ocorreu, o novo
valor de DOMHighResTimeStamp
poderá ser comparado diretamente com
performance.now()
.
Se você precisar transformar Event.timeStamp
em um número absoluto
de milissegundos desde a época do sistema, poderá conseguir esse valor adicionando um
DOMHighResTimeStamp
a performance.timing.navigationStart
.
Nesses dois casos, DOMTimeStamp
e DOMHighResTimeStamp
se comportam de maneira diferente, mas você pode simplificar o código entre navegadores usando esta função de conversão, cortesia de Majid Valipour. Ela usa um objeto Event
como parâmetro e retorna um valor semelhante a DOMHighResTimeStamp
, pronto para ser comparado a performance.now()
ou adicionado a performance.timing.navigationStart
.