Właściwość timeStamp
interfejsu Event
wskazuje czas wystąpienia danego zdarzenia.
W wersjach Chrome starszych niż 49 ta wartość timeStamp
była reprezentowana jako DOMTimeStamp
, czyli tyle milisekund od epoki systemu, podobnie jak wartość zwracana przez Date.now()
.
Od Chrome 49 timeStamp
jest wartością DOMHighResTimeStamp
. Ta wartość nadal jest liczbą milisekund, ale z rozdzielczością w mikrosekundach, co oznacza, że zawiera część dziesiętną. Poza tym wartość nie jest względna względem epoki, lecz odnosi się do PerformanceTiming.navigationStart
, czyli do czasu przejścia użytkownika na stronę.
Zalety dodatkowej dokładności sygnatury czasowej można zaobserwować w tych przykładach:
Kwestie dotyczące różnych przeglądarek i starszych przeglądarek
Jeśli masz już kod, który porównuje wartości Event.timeStamp
z 2 zdarzeń, nie musisz go dostosowywać ze względu na zmianę na DOMHighResTimeStamp
. Dodatkowo w przeglądarkach obsługujących DOMHighResTimeStamp
istniejący kod będzie korzystać ze zwiększonej dokładności w mikrosekundach, a także z tego, że DOMHighResTimeStamp
będzie zwiększać monotonicznie, niezależnie od tego, czy zegar systemowy zmienia 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żna porównać bezpośrednio z performance.now()
.
Jeśli musisz przekształcić Event.timeStamp
w bezwzględną liczbę milisekund od początku epoki systemu, możesz uzyskać tę wartość, dodając DOMHighResTimeStamp
do performance.timing.navigationStart
.
W obu tych przypadkach identyfikatory DOMTimeStamp
i DOMHighResTimeStamp
działają inaczej, ale możesz uprościć kod w różnych przeglądarkach, korzystając z tej funkcji konwersji udostępnionej przez Majid Valipour. Przyjmuje obiekt Event
jako parametr i zwraca wartość podobną do DOMHighResTimeStamp
, którą można porównać z wartością performance.now()
lub dodać do performance.timing.navigationStart
.