यदि आप क्रॉस-डोमेन हैं, तो बस src को उसी url पर सेट करना हमेशा एक पुनः लोड को ट्रिगर नहीं करेगा, भले ही स्थान बदल गया हो।
मैन्युअल रूप से ट्विटर बटन iframes का निर्माण करते समय इस समस्या में भाग गया, जब मैं url को अद्यतन नहीं करता।
बटन जैसे ट्विटर का रूप है:
.../tweet_button.html#&_version=2&count=none&etc=...
चूँकि Twitter url के लिए दस्तावेज़ के टुकड़े का उपयोग करता है, इसलिए हैश / टुकड़ा को बदलना स्रोत को पुनः लोड नहीं करता है, और बटन लक्ष्य मेरे नए AJAX लोड सामग्री को प्रतिबिंबित नहीं करते हैं।
आप पुनः लोड करने के लिए बल के लिए एक क्वेरी स्ट्रिंग पैरामीटर को जोड़ सकते हैं (जैसे: "?_=" + Math.random()
लेकिन यह बैंडविड्थ को बर्बाद कर देगा, विशेष रूप से इस उदाहरण में जहां ट्विटर का दृष्टिकोण विशेष रूप से कैशिंग को सक्षम करने की कोशिश कर रहा था।
किसी चीज़ को फिर से लोड करने के लिए जो केवल हैश टैग के साथ बदलता है, आपको तत्व को हटाने या बदलने की आवश्यकता है src
, थ्रेड के बाहर निकलने की प्रतीक्षा करें, फिर उसे वापस असाइन करें। यदि पृष्ठ अभी भी कैश किया गया है, तो इसके लिए नेटवर्क हिट की आवश्यकता नहीं होनी चाहिए, लेकिन फ़्रेम रीलोड को ट्रिगर करता है।
var old = iframe.src;
iframe.src = '';
setTimeout( function () {
iframe.src = old;
}, 0);
अद्यतन : इस दृष्टिकोण का उपयोग अवांछित इतिहास आइटम बनाता है। इसके बजाय, प्रत्येक बार iframe तत्व को निकालें और पुनः बनाएँ, जो इस बैक () बटन को अपेक्षित रूप से काम करता रहता है। टाइमर न होना भी अच्छा है।