जैसा कि @ उज्जवल-सिंह पहले से ही अपने उत्तर में लिखा है, दूसरे पैरामीटर title
इतिहास में प्रवेश के लिए एक लेबल के रूप में उपयोग किया जा सकता है लेकिन यह वैकल्पिक है और ब्राउज़र इसे अनदेखा कर सकता है और इसके लिए एक अलग स्रोत का उपयोग करने का निर्णय ले सकता है शीर्षक। note below bullet point 8 at chapter 5.5.2 of the HTML 5 specification राज्य
title
पूरी तरह से सलाहकार है। उपयोगकर्ता एजेंट उपयोगकर्ता इंटरफ़ेस में शीर्षक का उपयोग कर सकते हैं।
इस प्रकार क्रोम और फ़ायरफ़ॉक्स काम करते हैं। इसलिए, निम्नलिखित कोड सभी प्रमुख ब्राउज़रों
document.title = myTitle;
history.pushState(myState, myTitle, myURL);
इस कोड को भी दस्तावेज़ और क्रोम और फ़ायरफ़ॉक्स इस एक का उपयोग करने वाले हैं के शीर्षक अद्यतन करता है के बीच एक समान उपयोगकर्ता अनुभव करने के लिए नेतृत्व चाहिए।
हालांकि, यह अपेक्षित काम नहीं करता है और आपको एक अजीब ऑफ-बाय-वन बग का अनुभव होगा। (यह एफएफ के लिए संस्करण 45 और क्रोम 51 तक कम से कम सच है।) समस्या यह है कि यूआई तुरंत अपडेट नहीं होता है, लेकिन जेएस कॉल स्टैक खाली होने के बाद ही। इसलिए, pushState
अभी भी पुराने (आउट-डेटेड) शीर्षक का उपयोग करेगा, क्योंकि दस्तावेज़ का नया शीर्षक अभी तक DOM पर लागू नहीं है। इस कोड स्निपेट के अगले कॉल पर pushState
पहले परिवर्तित शीर्षक का उपयोग करता है और इसी तरह।
यदि उपयोगकर्ता इतिहास से कोई आइटम चुनता है, तो उपयोगकर्ता उपयोगकर्ता की अपेक्षा से भिन्न पृष्ठ पर गुमराह हो जाता है, क्योंकि प्रत्येक इतिहास प्रविष्टि के लेबल और इतिहास प्रविष्टि का वास्तविक गंतव्य एक-एक करके सिंक हो जाता है ।
हालांकि, यह मुझे क्रोम और फ़ायरफ़ॉक्स में एक बग जैसा दिखता है। हालांकि यूआई को केवल pushState
को समाप्त करने के बाद अद्यतन किया गया है, पहले से ही नए शीर्षक का उपयोग करना चाहिए। मैंने क्रोमियम और मोज़िला दोनों में एक बग रिपोर्ट दायर की है।
मैं इस बात का उपयोग करके बस काम कर रहा हूं: 'document.title =" NEW_TITLE "' history.pushstate 'पर कॉल करने से पहले, लेकिन यह किस तरह से काम नहीं करता है? –
आप कुछ भी गलत नहीं कर रहे हैं, वैसे ही यह काम करता है। इतिहास एपीआई यूआरएल बदलता है और आपको बाकी को करना होगा, जैसे कि शीर्षक सहित दस्तावेज़ सामग्री को बदलना। – adeneo
तो इसका मतलब है - 'शीर्षक' परम एक डमी है? –