Stempel waktu resolusi tinggi untuk acara

Properti timeStamp dari antarmuka Event menunjukkan waktu saat peristiwa tertentu terjadi.

Pada versi Chrome sebelum 49, nilai timeStamp ini diwakili sebagai DOMTimeStamp, yang merupakan bilangan bulat dalam milidetik sejak epoch sistem, mirip dengan nilai yang ditampilkan oleh Date.now().

Mulai Chrome 49, timeStamp adalah nilai DOMHighResTimeStamp. Nilai ini masih berupa jumlah milidetik, tetapi dengan resolusi mikrodetik, artinya nilai tersebut akan menyertakan komponen desimal. Selain itu, bukannya nilai yang relatif terhadap epoch, nilainya relatif terhadap PerformanceTiming.navigationStart, yaitu waktu saat pengguna membuka halaman.

Manfaat akurasi stempel waktu tambahan dapat dilihat dalam contoh berikut:

Pertimbangan lintas browser dan lama

Jika sudah memiliki kode yang membandingkan nilai Event.timeStamp dari dua peristiwa, Anda tidak perlu menyesuaikan kode karena peralihan ke DOMHighResTimeStamp. Selain itu, pada browser yang mendukung DOMHighResTimeStamp, kode yang ada akan mendapatkan manfaat dari peningkatan akurasi mikrodetik, serta fakta bahwa DOMHighResTimeStamp dijamin akan meningkat secara monoton, terlepas dari apakah jam sistem berubah di tengah eksekusi halaman web Anda.

Jika, alih-alih membandingkan dua nilai Event.timeStamp, kode Anda perlu menentukan berapa lama peristiwa telah terjadi, nilai DOMHighResTimeStamp baru dapat dibandingkan langsung dengan performance.now(). Jika perlu mengubah Event.timeStamp ke jumlah absolut milidetik sejak epoch sistem, Anda bisa mendapatkan nilai tersebut dengan menambahkan DOMHighResTimeStamp ke performance.timing.navigationStart.

Dalam kedua kasus tersebut, DOMTimeStamp dan DOMHighResTimeStamp berperilaku berbeda, tetapi Anda dapat menyederhanakan kode lintas browser menggunakan fungsi konversi, yang disediakan oleh Majid Valipour. Metode ini mengambil objek Event sebagai parameter dan menampilkan nilai seperti DOMHighResTimeStamp, yang siap dibandingkan dengan performance.now() atau ditambahkan ke performance.timing.navigationStart.