2012-12-11 37 views
6

अद्यतन नहीं कर रहा है मैं पृष्ठ की मुख्य सामग्री लोड करने के लिए AJAX का उपयोग कर रहा हूं। history.pushstate(Object:State, String:Title, String:URL) का उपयोग करना - मैं पता बार में यूआरएल अपडेट करने और इतिहास में वापस नेविगेट करने में सक्षम हूं।history.pushstate शीर्षक

हालांकि title पैरामीटर का कोई प्रभाव नहीं पड़ता है। न तो विंडो शीर्षक बदलता है और न ही 'इतिहास सूची' में प्रविष्टियों का शीर्षक (शायद वे दोनों वही हैं)।

मैं क्या गलत कर रहा हूं?

अद्यतन: title परम को क्रोम में आसानी से अनदेखा किया जाता है। http://lists.whatwg.org/pipermail/whatwg-whatwg.org/2010-June/026827.html

+1

मैं इस बात का उपयोग करके बस काम कर रहा हूं: 'document.title =" NEW_TITLE "' history.pushstate 'पर कॉल करने से पहले, लेकिन यह किस तरह से काम नहीं करता है? –

+0

आप कुछ भी गलत नहीं कर रहे हैं, वैसे ही यह काम करता है। इतिहास एपीआई यूआरएल बदलता है और आपको बाकी को करना होगा, जैसे कि शीर्षक सहित दस्तावेज़ सामग्री को बदलना। – adeneo

+0

तो इसका मतलब है - 'शीर्षक' परम एक डमी है? –

उत्तर

9

title पैरामीटर विंडो शीर्षक नहीं है।
इसका उपयोग राज्य के शीर्षक के रूप में किया जा सकता है लेकिन कुछ ब्राउज़र जैसे क्रोम बस इसे अनदेखा करें।

+0

यदि राज्य का शीर्षक - * स्ट्रिंग * है जो मैं इतिहास सूची में देखता हूं (क्रोम में 'बैक' बटन दबाने और दबाकर - फिर भी यह 'हिस्ट्रॉटी.pushstate: शीर्षक' –

+3

द्वारा अप्रभावित प्रतीत होता है कुछ ब्राउज़र (जैसे एफएफ) अनदेखा करते हैं पैरामीटर, हां। – Tetaxa

+2

फिर 'शीर्षक' परम का उद्देश्य क्या है - उन ब्राउज़रों में जो उनका समर्थन करते हैं? –

2

जैसा कि @ उज्जवल-सिंह पहले से ही अपने उत्तर में लिखा है, दूसरे पैरामीटर 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 को समाप्त करने के बाद अद्यतन किया गया है, पहले से ही नए शीर्षक का उपयोग करना चाहिए। मैंने क्रोमियम और मोज़िला दोनों में एक बग रिपोर्ट दायर की है।