事件的高解析度時間戳記

Event 介面的 timeStamp 屬性代表特定事件的發生時間。

在 Chrome 49 以下版本中,這個 timeStamp 值表示為 DOMTimeStamp,這是自系統週期以來的整數毫秒,與 Date.now() 傳回的值類似。

從 Chrome 49 開始,timeStampDOMHighResTimeStamp 值。這個值仍是毫秒數,但解析度為微秒,這表示這個值會包含小數元件。此外,該值不是相對於週期的值,而是與 PerformanceTiming.navigationStart (也就是使用者前往頁面的時間) 的相對關係。

以下舉例說明其他時間戳記準確性的優點:

跨瀏覽器和舊版註意事項

如果現有程式碼會比較兩個事件的 Event.timeStamp 值,就無需在改用 DOMHighResTimeStamp 的情況下調整程式碼。此外,在支援 DOMHighResTimeStamp 的瀏覽器中,現有的程式碼將可享有更高的微秒準確率,而且無論網頁在執行期間的系統時鐘是否發生變化,DOMHighResTimeStamp 都能單調提高

如果不是比較兩個 Event.timeStamp 值,而您的程式碼需要判斷事件發生多久,就可以直接將新的 DOMHighResTimeStamp 值與 performance.now() 進行比較。此外,如果您需要將 Event.timeStamp 轉換為自系統週期以來的絕對毫秒數,只要將 DOMHighResTimeStamp 新增至 performance.timing.navigationStart,即可取得該值。

在這兩種情況下,DOMTimeStampDOMHighResTimeStamp 的運作原理不同,但您可以使用 Majid Valipour 提供的轉換函式簡化跨瀏覽器程式碼。此函式將 Event 物件做為參數,並傳回類似 DOMHighResTimeStamp 的值,可供與 performance.now() 進行比較或新增至 performance.timing.navigationStart