Event
介面的 timeStamp
屬性代表特定事件的發生時間。
在 Chrome 49 以下版本中,這個 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
。