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

تشير السمة 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.