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

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

في إصدارات Chrome الأقدم من الإصدار 49، كانت قيمة timeStamp تُمثَّل على أنّها DOMTimeStamp، وهي عدد صحيح بالمللي ثانية منذ بداية النظام، تمامًا مثل القيمة التي تعرِضها Date.now().

بدءًا من الإصدار 49 من Chrome، أصبح timeStamp قيمة DOMHighResTimeStamp. لا تزال هذه القيمة عددًا من المللي ثانية، ولكن بدقة في الميكرو ثانية، ما يعني أنّ القيمة ستتضمّن مكوّنًا عشريًا. بالإضافة إلى ذلك، بدلاً من أن تكون القيمة نسبية إلى الحقبة، تكون نسبية إلى PerformanceTiming.navigationStart، أي الوقت الذي انتقل فيه المستخدِم إلى الصفحة.

يمكن الاطّلاع على مزايا دقة الطابع الزمني الإضافية في الأمثلة التالية:

اعتبارات متعلّقة بالمتصفّحات القديمة والمتعددة

إذا كان لديك رمز حالي يقارن قيم Event.timeStamp من حدثَين، لن تحتاج إلى تعديل الرمز بسبب الانتقال إلى DOMHighResTimeStamp. بالإضافة إلى ذلك، في المتصفحات التي تتيح استخدام DOMHighResTimeStamp، سيستفيد الرمز الحالي من دقة المللي ثانية المتزايدة، بالإضافة إلى أنّه من المؤكد أن DOMHighResTimeStampيزداد بشكلٍ أحادي، بغض النظر عمّا إذا كانت ساعة النظام تتغيّر في منتصف تنفيذ صفحة الويب.

إذا كان رمزك يحتاج إلى تحديد المدة التي مضت على وقوع حدث بدلاً من مقارنة قيمتَي Event.timeStamp، يمكن مقارنة القيمة الجديدة DOMHighResTimeStamp مباشرةً بقيمة performance.now(). وإذا كنت بحاجة إلى تحويل Event.timeStamp إلى عدد مطلق من المللي ثانية منذ بداية حساب النظام، يمكنك الحصول على هذه القيمة من خلال إضافة DOMHighResTimeStamp إلى performance.timing.navigationStart.

في كلتا الحالتَين، تختلف سلوك الدالتَين DOMTimeStamp وDOMHighResTimeStamp، ولكن يمكنك تبسيط الرمز البرمجي المتوافق مع جميع المتصفّحات باستخدام دالة الإحالة الناجحة، بفضل ماجيد فاليبور. تأخذ هذه الدالة كائن Event كمَعلمة وتُرجع قيمة مشابهة ل DOMHighResTimeStamp، تكون جاهزة للمقارنة مع performance.now() أو إضافتها إلى performance.timing.navigationStart.