イベントの高解像度タイムスタンプ

Event インターフェースの timeStamp プロパティは、特定のイベントが発生した時刻を示します。

バージョン 49 より前の Chrome では、この timeStamp 値は DOMTimeStamp として表され、Date.now() によって返される値とほぼ同様に、システム エポックからの整数ミリ秒を表します。

Chrome 49 以降では、timeStampDOMHighResTimeStamp の値です。この値は依然としてミリ秒ですが、分解能はマイクロ秒です。つまり、値には小数部分が含まれます。また、この値はエポックを基準とするのではなく、PerformanceTiming.navigationStart(ユーザーがページにアクセスした時刻)を基準とします。

タイムスタンプの精度を高めるメリットは、次の例のようになります。

クロスブラウザと以前の考慮事項

2 つのイベントの Event.timeStamp 値を比較する既存のコードがある場合、DOMHighResTimeStamp へのシフトを考慮してコードを調整する必要はありません。さらに、DOMHighResTimeStamp をサポートしているブラウザでは、マイクロ秒の精度が向上し、ウェブページの実行中にシステム クロックが変更されるかどうかにかかわらず、DOMHighResTimeStamp単調に増加することが保証されるという利点が生まれます。

2 つの Event.timeStamp 値を比較する代わりに、イベント発生時刻を特定する必要がある場合は、新しい DOMHighResTimeStamp 値を performance.now() と直接比較できます。また、Event.timeStamp をシステム エポックからの絶対ミリ秒数に変換する必要がある場合は、DOMHighResTimeStampperformance.timing.navigationStart に追加します。

どちらの場合も DOMTimeStampDOMHighResTimeStamp の動作は異なりますが、この変換関数を使用すると、Majid Valipour の協力によりクロスブラウザ コードを簡素化できます。これは、Event オブジェクトをパラメータとして受け取り、DOMHighResTimeStamp のような値を返します。この値は、performance.now() と比較または performance.timing.navigationStart に追加可能です。