Event 介面的 timeStamp 屬性會指出特定事件發生的時間。
在 49 之前的 Chrome 版本中,這個 timeStamp 值會以 DOMTimeStamp 表示,這是自系統紀元起算的整數毫秒,類似 Date.now() 傳回的值。
自 Chrome 49 起,timeStamp 為 DOMHighResTimeStamp 值。這個值仍是毫秒數,但具有微秒解析度,也就是說,值會包含小數部分。此外,該值並非相對於紀元,而是相對於 PerformanceTiming.navigationStart,也就是使用者瀏覽網頁的時間。
以下範例說明提高時間戳記準確度的優點:
跨瀏覽器和舊版考量
如果您有現有的程式碼,用於比較兩個事件的 Event.timeStamp 值,則不必因轉換為 DOMHighResTimeStamp 而調整程式碼。此外,在支援 DOMHighResTimeStamp 的瀏覽器上,您現有的程式碼將受惠於提升的微秒準確度,以及 DOMHighResTimeStamp 保證單調增加的事實,無論系統時鐘是否在網頁執行期間變更。
如果您的程式碼需要判斷事件發生的時間,而非比較兩個 Event.timeStamp 值,則可以直接將新的 DOMHighResTimeStamp 值與 performance.now() 進行比較。如果您需要將 Event.timeStamp 轉換為系統紀元起算的毫秒絕對數,只要將 DOMHighResTimeStamp 新增至 performance.timing.navigationStart,即可取得該值。
在上述兩種情況下,DOMTimeStamp 和 DOMHighResTimeStamp 的行為都不同,但您可以使用這個轉換函式 (由 Majid Valipour 提供),簡化跨瀏覽器的程式碼。這個函式會將 Event 物件做為參數,並傳回類似 DOMHighResTimeStamp 的值,可用於與 performance.now() 比較或新增至 performance.timing.navigationStart。