मेरे पास एक ऐसा पृष्ठ है जिसे उपयोगकर्ता संशोधित कर सकता है। सभी संशोधनों को JQuery का उपयोग करके किया जाता है, और सर्वर को भी भेजा जाता है, ताकि एक पूर्ण रीलोड भी संशोधित पृष्ठ का उत्पादन करेगा।बैक बटन के साथ AJAXy पृष्ठ अपडेट को कैसे मिश्रित करें ताकि उपयोगकर्ता वापस आने पर अपडेट अभी भी वहां हों?
यह फ़ायरफ़ॉक्स 11/विंडोज़ पर क्रोम में ठीक काम करता है: भले ही उपयोगकर्ता कहीं और नेविगेट करता है और फिर "बैक" बटन का उपयोग करता है, तो उन्हें पृष्ठ को उनके नवीनतम संपादन के साथ मिलता है।
हालांकि, अगर मैं अब पेज पर Google मानचित्र एम्बेड करता हूं, तो बैक बटन काम करना बंद कर देता है: यह उपयोगकर्ता को पृष्ठ पर ले जाता है कि यह उनके सभी संपादन से पहले कैसा था। यह पृष्ठ ब्राउज़र के कैश को छोड़कर अब भी मौजूद नहीं है, और फिर भी यह प्रदर्शित हो जाता है।
मैंने एक सरल टेस्टकेसhere जो इस व्यवहार को दिखाता है, को एक साथ रखा है।
क्या देता है? मैं इसे कैसे ठीक करूं? सही समाधान ब्राउज़र को पृष्ठ को फिर से लोड किए बिना वापस जाने की अनुमति देगा, जैसे कि यह सामान्य रूप से करेगा।
पीएस स्पष्ट रूप से "कामकाजी" उदाहरण वास्तव में ओएसएक्स पर क्रोम में काम नहीं करता है। पृष्ठ के एक पुराने संस्करण पर वापस जाने के लिए मैं ब्राउज़र के आग्रह के आसपास कैसे काम कर सकता हूं?
बग रिपोर्ट इस व्यवहार का वर्णन: Firefox
बाउंटी: फ़ायरफ़ॉक्स और क्रोम विंडोज प्रदर्शनी दोनों व्यवहार (एक मामले में वापस संशोधित डोम के लिए जा रहा है, लेकिन किसी अन्य रूप में असंशोधित) पर । क्या कोई स्पेक वर्णन करता है कि ब्राउज़र क्या करना चाहिए? क्या इस तरह से एक या दूसरे को बदलने के लिए दायर की गई बग हैं? क्या इस मुद्दे का एक आम नाम है जिसे मैं Google कर सकता हूं?
मैं एक समाधान पर विचार कर रहा हूं जिससे मैं जावास्क्रिप्ट के माध्यम से एक छुपा तत्व अद्यतन करता हूं, और फिर जांच करता हूं कि अद्यतन अभी भी है या नहीं। यदि ऐसा है, तो "बैक" बटन अद्यतित डीओएम बहाल किया गया है, और कुछ और करने की आवश्यकता नहीं है। यदि नहीं, ब्राउज़र ने पुराने डीओएम को बहाल कर दिया, और मैं बस एक पेज रीलोड को मजबूर कर सकता हूं, जैसा कि अप्रिय है। इस दृष्टिकोण पर किसी भी टिप्पणी का भी स्वागत है।
नोट: असली वेबसाइट के मुकाबले अधिक संपादन योग्य नियंत्रण हैं, और उनमें से एक एक फ्रीफॉर्म टेक्स्ट क्षेत्र है। मैं प्रस्तावित समाधानों को काम करना चाहूंगा भले ही उपयोगकर्ता ने टेक्स्ट के कई पैराग्राफ जोड़े हों। उदाहरण के लिए #
के बाद उस तरह की चीज़ यूआरएल में शामिल नहीं की जा सकती है।
आप भी ajax के माध्यम से रूपों की प्रारंभिक अवस्था लोड हो रहा है माना जाता है? – kritzikratzi
@kritzikratzi ऐसा करने के दो तरीके हैं। एक: पृष्ठ में आवश्यक डेटा एम्बेड करें (जो मुझे लगता है कि वर्तमान दृष्टिकोण के समान समस्या है), या दो: पेज लोड होने के बाद इसे अनुरोध करें (जो पेज को कम से कम दो बार धीमा कर देता है)। मैं या तो खुश नहीं हूँ। –
मैं देखता हूं। क्या आपने अनलोड श्रोताओं को जोड़ने की कोशिश की है? मैंने इसका कभी भी उपयोग नहीं किया है, लेकिन स्पष्ट रूप से बस श्रोता को पंजीकृत करने से कई आधुनिक ब्राउज़र में कैश अक्षम हो जाता है (उदाहरण के लिए यहां देखें: http://www.webkit.org/blog/516/webkit-page-cache-ii-the- अनलोड-इवेंट /) – kritzikratzi