Hochauflösende Zeitstempel für Ereignisse

Das Attribut timeStamp der Event-Benutzeroberfläche gibt an, wann ein bestimmtes Ereignis stattgefunden hat.

In früheren Chrome-Versionen (vor 49) wurde dieser timeStamp-Wert als DOMTimeStamp dargestellt, was einer ganzen Anzahl von Millisekunden seit der Systemepoche entsprach, ähnlich wie der Wert, der von Date.now() zurückgegeben wird.

Ab Chrome 49 ist timeStamp ein DOMHighResTimeStamp-Wert. Dieser Wert ist weiterhin eine Anzahl von Millisekunden, aber mit einer Auflösung in Mikrosekunden. Das bedeutet, dass der Wert eine Dezimalkomponente enthält. Außerdem ist der Wert nicht mehr relativ zum Epochendatum, sondern relativ zu PerformanceTiming.navigationStart, also der Zeit, zu der der Nutzer die Seite aufgerufen hat.

Die Vorteile einer höheren Genauigkeit von Zeitstempeln sind in diesen Beispielen zu sehen:

Browserübergreifende und Legacy-Hinweise

Wenn Sie bereits Code haben, in dem Event.timeStamp-Werte aus zwei Ereignissen verglichen werden, müssen Sie Ihren Code aufgrund der Umstellung auf DOMHighResTimeStamp nicht anpassen. Außerdem profitieren Sie in Browsern, die DOMHighResTimeStamp unterstützen, mit Ihrem vorhandenen Code von der erhöhten Mikrosekundengenauigkeit und davon, dass DOMHighResTimeStamp garantiert monoton ansteigt, unabhängig davon, ob sich die Systemuhr während der Ausführung Ihrer Webseite ändert.

Wenn Ihr Code nicht zwei Event.timeStamp-Werte vergleichen, sondern ermitteln soll, wie lange ein Ereignis zurückliegt, kann der neue DOMHighResTimeStamp-Wert direkt mit performance.now() verglichen werden. Wenn Sie Event.timeStamp in eine absolute Anzahl von Millisekunden seit der Systemepoche umwandeln möchten, können Sie diesen Wert erhalten, indem Sie DOMHighResTimeStamp zu performance.timing.navigationStart addieren.

In beiden Fällen verhalten sich DOMTimeStamp und DOMHighResTimeStamp unterschiedlich. Sie können Ihren browserübergreifenden Code jedoch mithilfe dieser Conversion-Funktion von Majid Valipour vereinfachen. Er nimmt ein Event-Objekt als Parameter entgegen und gibt einen DOMHighResTimeStamp-ähnlichen Wert zurück, der mit performance.now() verglichen oder zu performance.timing.navigationStart hinzugefügt werden kann.