Sygnatury czasowe zdarzeń o wysokiej rozdzielczości

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.