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 milidetik sejak epoch sistem, seperti nilai yang ditampilkan oleh Date.now().

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

Manfaat akurasi stempel waktu tambahan dapat dilihat dalam contoh berikut:

Pertimbangan lintas browser dan versi 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 terjadi, nilai DOMHighResTimeStamp yang baru dapat dibandingkan secara langsung dengan performance.now(). Jika Anda perlu mengubah Event.timeStamp ke angka absolut milidetik sejak epoch sistem, Anda bisa mendapatkan nilai tersebut dengan menambahkan DOMHighResTimeStamp ke performance.timing.navigationStart.

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