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
。