मैं अभी फ़ायरफ़ॉक्स 3.6/मैक में कुछ अजीब व्यवहार में आया हूं। मुझे संदेह है कि यह सामान्य फ़ायरफ़ॉक्स व्यवहार है, यद्यपि।जावास्क्रिप्ट रीडायरेक्ट (location.href) बैक बटन तोड़ता है जब तक कि सेटटाइमआउट() का उपयोग नहीं किया जाता
मैं नया URL पर नेविगेट करने दो मृत-सरल परीक्षण पृष्ठों कि window.location.href
संपत्ति को बदलने बनाया:
- http://troy.onespot.com/static/stack_overflow/redirect.html
- http://troy.onespot.com/static/stack_overflow/redirect_timeout.html
आप या तो फ़ाइल के साथ निम्नलिखित का प्रयास करें:
- नया/खाली ब्राउज़र टैब खोलें।
- यूआरएल पेस्ट करें और "एंटर" दबाएं।
आप दोनों के बीच एक अंतर देखेंगे: पहले लिंक का उपयोग करके, ब्राउज़र का "बैक" बटन अक्षम कर दिया गया है; दूसरे का उपयोग करके, यह सक्षम है और काम करता है क्योंकि मैं इसकी अपेक्षा करता हूं।
दो स्क्रिप्ट के बीच एकमात्र अंतर यह है कि बाद में window.location.href
बदलने से पहले एक-सेकंड टाइमआउट सेट करता है।
मुझे नहीं पता कि ऐसा क्यों होता है, और मैं दूसरी स्क्रिप्ट के व्यवहार को प्राप्त करने की कोशिश कर रहा हूं (जहां "बैक" बटन उपयोगकर्ता के लिए कोई देरी किए बिना अपेक्षित काम करता है)।
मेरे सबसे अच्छा अनुमान है कि शायद फ़ायरफ़ॉक्स व्यवहार करता है एक तत्काल "redirect", window.location.replace()
विधि का उपयोग कर के बाद से मुझे लगता है कि यह एक आम बात है डेवलपर्स पूर्व का उपयोग करने के लिए जब वे बाद का उपयोग करने के लिए होती रूप window.location.href
ही की स्थापना कर रहा है। शायद setTimeout
का उपयोग कर, क्योंकि इससे कोड को असीमित रूप से चलाने का कारण बनता है, इस व्यवहार को पराजित करता है। क्या यह मामला हो सकता है?
वांछित प्रभाव प्राप्त करने के लिए मैंने setTimeout
के न्यूनतम मूल्य के साथ प्रयोग नहीं किया है, लेकिन अब मैं यह करूँगा। मैं यह जानना चाहता हूं कि यह वास्तव में क्यों होता है।
धन्यवाद!
पहला मेरे लिए पूरी तरह से काम करता है: बैक बटन दबाएं और इस पृष्ठ पर वापस आएं। दूसरे के लिए, एक पीठ एक खाली पृष्ठ दिखाता है, दूसरी पीठ यहां वापस आती है। यदि मैं एक नए टैब में खुलता हूं, तो पहले के रूप में काम करता है, कोई वापस उपलब्ध नहीं है। दूसरा एक खाली पृष्ठ पर वापस चला जाता है। ये सभी सटीक व्यवहार हैं जिन्हें मैं आपके विवरण से अपेक्षा करता हूं। –
@ स्किप हेड - क्यों? एक टाइमआउट सेट करने से व्यवहार में बदलाव क्यों होगा? – sje397
आपके लिए कुछ और ब्राउज़र का परीक्षण किया गया: मैक के लिए लिनक्स/मैक और ओपेरा पर क्रोम पर होता है। लिनक्स के लिए मैक या फ़ायरफ़ॉक्स के लिए सफारी पर नहीं होता है। – Robert