חותמות זמן של אירועים ברזולוציה גבוהה

המאפיין 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.