La propiedad timeStamp
de la interfaz Event
indica la hora a la que ocurrió un evento determinado.
En las versiones de Chrome anteriores a la 49, este valor de timeStamp
se representaba como DOMTimeStamp
, que era un número entero de milisegundos desde el ciclo de entrenamiento del sistema, similar al valor que muestra Date.now()
.
A partir de Chrome 49, timeStamp
es un valor DOMHighResTimeStamp
. Este valor sigue siendo un número de milisegundos, pero con una resolución de microsegundos, lo que significa que incluirá un componente decimal. Además, en lugar de que el valor esté relacionado con la época, el valor es relativo al PerformanceTiming.navigationStart
, es decir, la hora a la que el usuario navegó a la página.
Los beneficios de la precisión adicional de la marca de tiempo se pueden ver en estos ejemplos:
Consideraciones heredadas y entre navegadores
Si tienes código existente que compara valores de Event.timeStamp
de dos eventos, no deberías tener que ajustar tu código debido al cambio a DOMHighResTimeStamp
. Además, en navegadores compatibles con DOMHighResTimeStamp
, tu código existente se beneficiará de una mayor precisión de microsegundos, además del hecho de que se garantiza que DOMHighResTimeStamp
aumenta de forma monotónica, independientemente de si el reloj del sistema cambia durante la ejecución de tu página web.
Si, en lugar de comparar dos valores Event.timeStamp
, tu código necesita determinar hace cuánto tiempo ocurrió un evento, el nuevo valor DOMHighResTimeStamp
se puede comparar directamente con performance.now()
.
Si necesitas transformar Event.timeStamp
en una cantidad absoluta de milisegundos desde el ciclo de entrenamiento del sistema, puedes obtener ese valor agregando DOMHighResTimeStamp
a performance.timing.navigationStart
.
En ambos casos, DOMTimeStamp
y DOMHighResTimeStamp
se comportan de manera diferente, pero puedes simplificar el código entre navegadores con esta función de conversión, cortesía de Majid Valipour. Toma un objeto Event
como parámetro y muestra un valor similar a DOMHighResTimeStamp
, listo para compararse con performance.now()
o agregarse a performance.timing.navigationStart
.