Event
インターフェースの timeStamp
プロパティは、特定のイベントが発生した時刻を示します。
バージョン 49 より前の Chrome では、この timeStamp
値は DOMTimeStamp
として表され、Date.now()
によって返される値とほぼ同様に、システム エポックからの整数ミリ秒を表します。
Chrome 49 以降では、timeStamp
は DOMHighResTimeStamp
の値です。この値は依然としてミリ秒ですが、分解能はマイクロ秒です。つまり、値には小数部分が含まれます。また、この値はエポックを基準とするのではなく、PerformanceTiming.navigationStart
(ユーザーがページにアクセスした時刻)を基準とします。
タイムスタンプの精度を高めるメリットは、次の例のようになります。
クロスブラウザと以前の考慮事項
2 つのイベントの Event.timeStamp
値を比較する既存のコードがある場合、DOMHighResTimeStamp
へのシフトを考慮してコードを調整する必要はありません。さらに、DOMHighResTimeStamp
をサポートしているブラウザでは、マイクロ秒の精度が向上し、ウェブページの実行中にシステム クロックが変更されるかどうかにかかわらず、DOMHighResTimeStamp
が単調に増加することが保証されるという利点が生まれます。
2 つの Event.timeStamp
値を比較する代わりに、イベント発生時刻を特定する必要がある場合は、新しい DOMHighResTimeStamp
値を performance.now()
と直接比較できます。また、Event.timeStamp
をシステム エポックからの絶対ミリ秒数に変換する必要がある場合は、DOMHighResTimeStamp
を performance.timing.navigationStart
に追加します。
どちらの場合も DOMTimeStamp
と DOMHighResTimeStamp
の動作は異なりますが、この変換関数を使用すると、Majid Valipour の協力によりクロスブラウザ コードを簡素化できます。これは、Event
オブジェクトをパラメータとして受け取り、DOMHighResTimeStamp
のような値を返します。この値は、performance.now()
と比較または performance.timing.navigationStart
に追加可能です。