Właściwość timeStamp
interfejsu Event
wskazuje czas wystąpienia danego zdarzenia.
W wersjach Chrome starszych niż 49 wartość timeStamp
była przedstawiana jako DOMTimeStamp
, czyli całkowita liczba milisekund od epoki systemowej, podobnie jak wartość zwracana przez Date.now()
.
Od Chrome 49 timeStamp
jest wartością DOMHighResTimeStamp
. Nadal jest to liczba milisekund, ale z rozdzielczością mikrosekundową, co oznacza, że zawiera komponent dziesiętny. Poza tym wartość nie odnosi się do epoki, lecz odnosi się do PerformanceTiming.navigationStart
, czyli czasu, w którym użytkownik przeszedł na stronę.
Oto zalety dodatkowej dokładności sygnatury czasowej:
Uwagi na temat różnych przeglądarek i starszych wersji
Jeśli masz kod, który porównuje wartości Event.timeStamp
z 2 zdarzeń, nie musisz go modyfikować z uwzględnieniem przejścia na DOMHighResTimeStamp
. Co więcej, w przeglądarkach, które obsługują DOMHighResTimeStamp
, istniejący kod będzie korzystać ze zwiększonej dokładności mikrosekundowych, a także zagwarantowania zwiększenia wartości DOMHighResTimeStamp
monotonicznie niezależnie od tego, czy zegar systemowy zmieni się w trakcie działania strony internetowej.
Jeśli zamiast porównywać 2 wartości Event.timeStamp
, Twój kod musi określić, kiedy miało miejsce zdarzenie, nową wartość DOMHighResTimeStamp
możesz bezpośrednio porównać z wartością performance.now()
.
Jeśli konieczne jest przekształcenie funkcji Event.timeStamp
na bezwzględną liczbę milisekund od początku epoki systemowej, możesz uzyskać tę wartość, dodając DOMHighResTimeStamp
do performance.timing.navigationStart
.
W obu tych przypadkach DOMTimeStamp
i DOMHighResTimeStamp
działają inaczej, ale możesz uprościć kod w różnych przeglądarkach, korzystając z funkcji konwersji dostępnej dzięki uprzejmości Majid Valipour. Przyjmuje on obiekt Event
jako parametr i zwraca wartość podobną do DOMHighResTimeStamp
, gotową do porównania z performance.now()
lub dodaną do performance.timing.navigationStart
.