事件的高解析度時間戳記

Event 介面的 timeStamp 屬性會指出特定事件發生的時間。

在 49 之前的 Chrome 版本中,這個 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