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 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.