Horodatages haute résolution des événements

La propriété timeStamp de l'interface Event indique l'heure à laquelle un événement donné s'est produit.

Dans les versions de Chrome antérieures à la version 49, cette valeur timeStamp était représentée par DOMTimeStamp, qui correspondait à un nombre entier de millisecondes écoulées depuis l'epoch du système, un peu comme la valeur renvoyée par Date.now().

À partir de Chrome 49, timeStamp est une valeur DOMHighResTimeStamp. Cette valeur est toujours exprimée en millisecondes, mais avec une résolution en microsecondes, ce qui signifie que la valeur inclut une composante décimale. De plus, au lieu d'être relative à l'époque, la valeur est relative à PerformanceTiming.navigationStart, c'est-à-dire à l'heure à laquelle l'utilisateur a accédé à la page.

Voici quelques exemples illustrant les avantages d'une plus grande précision d'horodatage:

Considérations relatives aux anciens navigateurs et aux multinavigateurs

Si vous disposez de code existant qui compare les valeurs Event.timeStamp de deux événements, vous ne devriez pas avoir à ajuster votre code en raison du passage à DOMHighResTimeStamp. De plus, sur les navigateurs compatibles avec DOMHighResTimeStamp, votre code existant bénéficiera de la précision accrue de la microseconde, ainsi que du fait que DOMHighResTimeStamp augmente de façon monotone, que l'horloge système change ou non au cours de l'exécution de votre page Web.

Si, au lieu de comparer deux valeurs Event.timeStamp, votre code doit déterminer la durée de l'événement, la nouvelle valeur DOMHighResTimeStamp peut être comparée directement à performance.now(). Si vous devez transformer Event.timeStamp en un nombre absolu de millisecondes écoulées depuis l'epoch du système, vous pouvez obtenir cette valeur en ajoutant un DOMHighResTimeStamp à performance.timing.navigationStart.

Dans ces deux cas, DOMTimeStamp et DOMHighResTimeStamp se comportent différemment, mais vous pouvez simplifier votre code multinavigateur à l'aide de cette fonction de conversion, mise à disposition de Majid Valipour. Elle utilise un objet Event comme paramètre et renvoie une valeur de type DOMHighResTimeStamp, prête à être comparée à performance.now() ou ajoutée à performance.timing.navigationStart.