इवेंट के लिए ज़्यादा रिज़ॉल्यूशन के टाइमस्टैंप

जेफ़ पॉस्निक
जेफ़ पॉस्निक

Event इंटरफ़ेस की timeStamp प्रॉपर्टी से पता चलता है कि कोई इवेंट किस समय हुआ.

Chrome के वर्शन 49 से पहले के वर्शन में, timeStamp की इस वैल्यू को DOMTimeStamp के तौर पर दिखाया जाता था. यह सिस्टम epoch के बाद से कुल मिलीसेकंड होता है. यह Date.now() से मिलने वाली वैल्यू की तरह ही होता है.

Chrome 49 से शुरू होने पर, timeStamp की वैल्यू DOMHighResTimeStamp है. यह वैल्यू अब भी कई मिलीसेकंड है. हालांकि, माइक्रोसेकंड रिज़ॉल्यूशन में यह वैल्यू कई मिलीसेकंड में शामिल होगी. साथ ही, epoch वैल्यू के बजाय, यह वैल्यू PerformanceTiming.navigationStart के हिसाब से है. इसका मतलब है कि उपयोगकर्ता ने पेज पर किस समय नेविगेट किया.

टाइम स्टैंप के सटीक होने के फ़ायदों को इन उदाहरणों में देखा जा सकता है:

क्रॉस-ब्राउज़र और लेगसी चीज़ों पर ध्यान देना

अगर आपके पास कोई ऐसा मौजूदा कोड है जो दो इवेंट में से Event.timeStamp की वैल्यू की तुलना करता है, तो आपको DOMHighResTimeStamp में शिफ़्ट होने पर अपने कोड में बदलाव करने की ज़रूरत नहीं है. इसके अलावा, DOMHighResTimeStamp के साथ काम करने वाले ब्राउज़र पर, आपके मौजूदा कोड को माइक्रोसेकंड में ज़्यादा सटीक होने का फ़ायदा मिलेगा. साथ ही, यह इस बात की भी गारंटी है कि DOMHighResTimeStamp एक ही समय पर बढ़ सकता है. इससे कोई फ़र्क़ नहीं पड़ता कि आपके वेब पेज के चलने के दौरान, सिस्टम की घड़ी के बीच में कोई बदलाव होता है या नहीं.

अगर Event.timeStamp की दो वैल्यू की तुलना करने के बजाय, आपके कोड को यह तय करने की ज़रूरत हो कि कोई इवेंट कितनी पहले हुआ है, तो नई DOMHighResTimeStamp वैल्यू की तुलना सीधे performance.now() से की जा सकती है. अगर आपको सिस्टम epoch के बाद से Event.timeStamp को मिलीसेकंड की कुल संख्या में बदलना है, तो performance.timing.navigationStart में DOMHighResTimeStamp जोड़कर इस वैल्यू को पाया जा सकता है.

इन दोनों मामलों में, DOMTimeStamp और DOMHighResTimeStamp अलग-अलग तरीके से काम करते हैं, लेकिन मैजिड वेलिपोर के सौजन्य से इस कन्वर्ज़न फ़ंक्शन का इस्तेमाल करके, अपने क्रॉस-ब्राउज़र कोड को आसान बनाया जा सकता है. यह Event ऑब्जेक्ट को पैरामीटर के तौर पर लेता है और DOMHighResTimeStamp-जैसी वैल्यू दिखाता है, जो performance.now() से तुलना करने के लिए तैयार है या performance.timing.navigationStart में जोड़ा जा सकता है.