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

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