La proprietà timeStamp
dell'interfaccia Event
indica l'ora in cui si è verificato un determinato evento.
Nelle versioni di Chrome precedenti alla 49, questo valore timeStamp
era rappresentato come DOMTimeStamp
, ovvero un numero intero di millisecondi dall'epoca del sistema, proprio come il valore restituito da Date.now()
.
A partire da Chrome 49, timeStamp
è un valore DOMHighResTimeStamp
. Questo valore è comunque un numero di millisecondi, ma con risoluzione in microsecondi, il che significa che il valore includerà un componente decimale. Inoltre, invece di essere relativo all'epoca, il valore è relativo a PerformanceTiming.navigationStart
, ovvero il momento in cui l'utente ha raggiunto la pagina.
I vantaggi di una maggiore precisione del timestamp sono i seguenti:
Considerazioni sui vari browser e sulle versioni precedenti
Se disponi di codice che confronta i valori Event.timeStamp
di
due eventi, non dovresti modificare il codice a causa del passaggio a
DOMHighResTimeStamp
. Inoltre, nei browser che supportano DOMHighResTimeStamp
, il codice esistente trarrà vantaggio dalla maggiore accuratezza in microsecondi e dal fatto che DOMHighResTimeStamp
aumenterà in modo monotonico, indipendentemente dal fatto che l'orologio di sistema cambi durante l'esecuzione della pagina web.
Se, invece di confrontare due valori Event.timeStamp
, il tuo codice
deve determinare quanto tempo fa si è verificato un evento, il nuovo
valore DOMHighResTimeStamp
può essere confrontato direttamente con
performance.now()
.
E se devi trasformare Event.timeStamp
in un numero assoluto di millisecondi dall'epoca del sistema, puoi ottenere quel valore aggiungendo DOMHighResTimeStamp
a performance.timing.navigationStart
.
In entrambi i casi, DOMTimeStamp
e DOMHighResTimeStamp
si comportano in modo diverso, ma è possibile semplificare il codice tra browser utilizzando questa
funzione di conversione,
per gentile concessione di Majid Valipour. Prende un oggetto Event
come parametro e restituisce un valore simile a DOMHighResTimeStamp
, pronto per essere confrontato con performance.now()
o aggiunto a performance.timing.navigationStart
.