การประทับเวลาความละเอียดสูงสำหรับเหตุการณ์

พร็อพเพอร์ตี้ timeStamp ของอินเทอร์เฟซ Event จะระบุเวลาที่เกิดเหตุการณ์หนึ่งๆ

ใน Chrome เวอร์ชันก่อน 49 ค่า timeStamp นี้จะแสดงเป็น DOMTimeStamp ซึ่งเป็นจำนวนเต็มเป็นมิลลิวินาทีนับจากจุดเริ่มต้นของระบบ คล้ายกับค่าที่แสดงโดย Date.now()

ตั้งแต่ Chrome 49 เป็นต้นไป timeStamp จะเป็นค่า DOMHighResTimeStamp ค่านี้ยังคงเป็นจำนวนมิลลิวินาที แต่มีการคํานวณที่ละเอียดระดับไมโครวินาที ซึ่งหมายความว่าค่าจะมีองค์ประกอบทศนิยม นอกจากนี้ ค่าจะสัมพันธ์กับ PerformanceTiming.navigationStart แทนที่จะสัมพันธ์กับยุคสมัย ซึ่งก็คือเวลาที่ผู้ใช้ไปยังหน้าเว็บ

ตัวอย่างต่อไปนี้แสดงให้เห็นถึงประโยชน์ของความแม่นยำในการประทับเวลาเพิ่มเติม

ข้อควรพิจารณาแบบข้ามเบราว์เซอร์และแบบเดิม

หากมีโค้ดที่มีอยู่ซึ่งเปรียบเทียบค่า Event.timeStamp จาก 2 เหตุการณ์ คุณไม่ควรต้องปรับโค้ดเนื่องจากการเปลี่ยนไปใช้ DOMHighResTimeStamp นอกจากนี้ ในเบราว์เซอร์ที่รองรับ DOMHighResTimeStamp โค้ดที่มีอยู่จะใช้ประโยชน์จากความแม่นยำในระดับไมโครวินาทีที่เพิ่มขึ้น รวมถึงข้อเท็จจริงที่ว่า DOMHighResTimeStamp ได้รับการรับประกันว่าจะเพิ่มขึ้นแบบเชิงเดี่ยว ไม่ว่านาฬิการะบบจะเปลี่ยนแปลงไปในระหว่างที่หน้าเว็บทำงานหรือไม่ก็ตาม

หากโค้ดต้องระบุระยะเวลาที่ผ่านมานับตั้งแต่เกิดเหตุการณ์แทนการเปรียบเทียบค่า Event.timeStamp 2 ค่า คุณสามารถเปรียบเทียบค่า DOMHighResTimeStamp ใหม่กับ performance.now() ได้โดยตรง และหากต้องการเปลี่ยนรูปแบบ Event.timeStamp เป็นจํานวนสัมบูรณ์ของมิลลิวินาทีนับจากจุดเริ่มต้นของระบบ คุณจะได้รับค่านั้นโดยการเพิ่ม DOMHighResTimeStamp ลงใน performance.timing.navigationStart

ในกรณีทั้ง 2 กรณี DOMTimeStamp และ DOMHighResTimeStamp จะทํางานแตกต่างกัน แต่คุณสามารถลดความซับซ้อนของโค้ดข้ามเบราว์เซอร์ได้โดยใช้ฟังก์ชัน Conversion นี้ ซึ่งได้รับความอนุเคราะห์จาก Majid Valipour โดยจะใช้ออบเจ็กต์ Event เป็นพารามิเตอร์และแสดงผลค่าที่คล้ายกับ DOMHighResTimeStamp ซึ่งพร้อมที่จะเปรียบเทียบกับ performance.now() หรือเพิ่มลงใน performance.timing.navigationStart