طوابع زمنية عالية الدقة للأحداث

تشير سمة timeStamp للواجهة Event إلى الوقت الذي وقع فيه حدث معيّن.

في إصدارات 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.