Hochauflösende Zeitstempel für Ereignisse

Das Attribut timeStamp der Event-Oberfläche gibt den Zeitpunkt an, zu dem ein bestimmtes Ereignis stattgefunden hat.

In Chrome-Versionen vor 49 wurde dieser timeStamp-Wert als DOMTimeStamp dargestellt. Er war eine ganze Anzahl von Millisekunden seit der Systemepoche, ähnlich wie der von Date.now() zurückgegebene Wert.

Ab Chrome 49 ist timeStamp ein DOMHighResTimeStamp-Wert. Dieser Wert beträgt immer noch Millisekunden, hat jedoch eine Mikrosekundenauflösung, d. h. der Wert enthält eine Dezimalkomponente. Außerdem bezieht sich der Wert nicht auf die Epoche, sondern auf PerformanceTiming.navigationStart, also auf die Zeit, zu der der Nutzer die Seite aufgerufen hat.

Die Vorteile der zusätzlichen Zeitstempelgenauigkeit werden in diesen Beispielen deutlich:

Browserübergreifende und Legacy-Überlegungen

Wenn Sie vorhandenen Code haben, mit dem Event.timeStamp-Werte aus zwei Ereignissen verglichen werden, sollten Sie Ihren Code aufgrund der Verschiebung zu DOMHighResTimeStamp nicht anpassen müssen. In Browsern, die DOMHighResTimeStamp unterstützen, profitiert Ihr vorhandener Code außerdem von der erhöhten Genauigkeit im Mikrosekundenbereich und von der Tatsache, dass DOMHighResTimeStamp garantiert monoton zunimmt, unabhängig davon, ob sich die Systemuhr mitten auf der Ausführung Ihrer Webseite ändert.

Wenn mit Ihrem Code nicht zwei Event.timeStamp-Werte verglichen werden sollen, muss mit Ihrem Code ermittelt werden, wie lange ein Ereignis stattgefunden hat, kann der neue DOMHighResTimeStamp-Wert direkt mit performance.now() verglichen werden. Wenn Sie Event.timeStamp in eine absolute Zahl von Millisekunden seit der Systemzeitspanne umwandeln müssen, können Sie diesen Wert erhalten, indem Sie eine DOMHighResTimeStamp zu performance.timing.navigationStart hinzufügen.

In beiden Fällen verhalten sich DOMTimeStamp und DOMHighResTimeStamp unterschiedlich. Sie können aber mithilfe dieser Conversion-Funktion mithilfe von Majid Valipour Ihren browserübergreifenden Code vereinfachen. Dabei wird ein Event-Objekt als Parameter verwendet und ein DOMHighResTimeStamp-ähnlicher Wert zurückgegeben, der mit performance.now() verglichen oder zu performance.timing.navigationStart hinzugefügt werden kann.