2012-06-14 28 views
6

जब मेरा पृष्ठ आईफ्रेम के अंदर है तो मैं इंटरनेट एक्सप्लोरर के साथ एक अजीब व्यवहार देख रहा हूं। ऐसा लगता है कि if.hame window.history.back() को कॉल करते समय खुद को पुनः लोड करता है, भले ही यूआरएल में हैश बदलना चाहिए। जब पृष्ठ आईफ्रेम के अंदर नहीं होता है, तो यह ठीक से व्यवहार करता है और पृष्ठ को फिर से लोड नहीं करता है। कोई विचार क्यों यह हो रहा है और इसे कैसे रोकें?window.history.back() iffame के अंदर इंटरनेट एक्सप्लोरर में पृष्ठ को फिर से लोड करता है?

http://jsfiddle.net/peh96/5/

jsfiddle, एक iframe का उपयोग करता है तो व्यवहार आइफ्रेम व्यवहार होगा:

मैं एक बेला कि IE9 में इस प्रदर्शन करेंगे बनाया। '#foo' और '#bar' पर क्लिक करने से URL में हैश बदल जाएगा। अब 'बैक' लिंक पर क्लिक करने से window.history.back() ट्रिगर होगा। ध्यान दें कि जब आप ऐसा करते हैं तो टाइमस्टैम्प बदलता है, यह दर्शाता है कि पृष्ठ पुनः लोड हो रहा है।

वैकल्पिक रूप से, अगर आप iframe सीधे लोड:

http://fiddle.jshell.net/peh96/5/show/

आप ध्यान देंगे कि टाइमस्टैम्प नहीं बदलता है जब क्लिक 'बैक'।

यह केवल एक आईई मुद्दा है, क्योंकि क्रोम और फ़ायरफ़ॉक्स एक आईफ्रेम के अंदर या नहीं है।

कोई भी विचार इस रीलोड को कैसे रोकें?

+0

हम भी बहुत – Blackbird

+0

@Blackbird, वैकल्पिक हल है कि आप इस समस्या को हल करने के लिए चुना है क्या से परेशान हैं? –

+0

कोई भी, दुर्भाग्य के बारे में क्या :(आप?। मैं निर्माण के बारे में सोच रहा हूँ मेरी खुद का इतिहास ढेर और window.history.back() के बजाए इसका उपयोग कर रहा है। यह थोड़ा बदसूरत है, लेकिन मुझे आईई के लिए इसके आसपास किसी भी तरह से पता नहीं है। – Blackbird

उत्तर

2

ठीक है, जब मैं संदर्भ मेनू से वापस आदेश चुनता हूं, तो यह वही होता है। आईई 10 में आप HTML5 State Management का उपयोग कर सकते हैं। मैं IE9 में डर आप हैश इतिहास को ट्रैक करना चाहिए हूँ और की तुलना में यह इस तरह बदलने के लिए:

document.getElementById('back').addEventListener('click', function() { 
    window.location.hash = 'abc'; 
}, false); 

संपादित

और क्या इस बारे में? जब आप javascript:window.top.location.hash='bar' पर कॉल करते हैं, तो आप पैरेंट विंडो में onhashchange ईवेंट पकड़ सकते हैं और फिर iframe में scrollTo पर कॉल कर सकते हैं। लेकिन यह केवल एक ही डोमेन में काम करता है।

+0

धन्यवाद वाक्लाव। लेकिन मैं बेली पूर्व संध्या जो इतिहास के ढेर में एक और राज्य जोड़ता है, क्या यह सही है? तो जब यह काम करेगा, यह पीछे/आगे राज्यों को तोड़ देगा। –

+0

यह सच है। मैं एक और समाधान पता लगाने की कोशिश करूंगा। –

+0

मैं थोड़ा उलझन में हूं, लेकिन ऐसा लगता है कि http://jsfiddle.net/peh96/5/ क्विर्क मोड में उदाहरण दिखाता है जो ब्राउज़र इतिहास को देख सकता है # लिंक को अनदेखा कर सकता है। जब मैं http://fiddle.jshell.net/peh96/5/show/ खोलता हूं, यह अपेक्षा के अनुसार काम करता है। बेशक आपको 'ऑनशैशचेंज' होने पर समय अपडेट करना होगा। मेरा कोड जांचें: http://jsfiddle.net/ZGqHF/show/ –