मेरे पास एक IFrame और एक बटन के साथ एक वेबपेज है, एक बार बटन दबाए जाने के बाद मुझे IFrame को रीफ्रेश करने की आवश्यकता होती है। क्या यह संभव है, यदि ऐसा है तो कैसे? मैंने खोज की और कोई उत्तर नहीं मिला।
मेरे पास एक IFrame और एक बटन के साथ एक वेबपेज है, एक बार बटन दबाए जाने के बाद मुझे IFrame को रीफ्रेश करने की आवश्यकता होती है। क्या यह संभव है, यदि ऐसा है तो कैसे? मैंने खोज की और कोई उत्तर नहीं मिला।
जवाबों:
var iframe = document.getElementById('youriframe');
iframe.src = iframe.src;
Version 24.0.1312.56 Ubuntu 12.04 (24.0.1312.56-0ubuntu0.12.04.1)
var tmp_src = iframe.src; iframe.src = ''; iframe.src = tmp_src;
document.getElementById('frame_id').contentDocument.location.reload(true);
यह मदद करनी चाहिए:
document.getElementById('FrameID').contentWindow.location.reload(true);
संपादित करें: @ जोरो की टिप्पणी के अनुसार वस्तु का नाम निश्चित।
reload(true)
आप इस का उपयोग करेंगे:document.getElementById('FrameID').contentWindow.location.replace(new_url);
बशर्ते iframe को एक ही डोमेन से लोड किया गया है, तो आप यह कर सकते हैं, जो थोड़ा अधिक समझ में आता है:
iframe.contentWindow.location.reload();
IE, Mozzila, Chrome के लिए काम करता है
document.getElementById('YOUR IFRAME').contentDocument.location.reload(true);
आप इस सरल विधि का उपयोग कर सकते हैं
function reloadFrame(iFrame) {
iFrame.parentNode.replaceChild(iFrame.cloneNode(), iFrame);
}
यहीं से मिला
var f = document.getElementById('iframe1');
f.src = f.src;
2017:
यदि यह एक ही डोमेन पर है:
iframe.contentWindow.location.reload();
काम करेगा।
सीधे src विशेषता रीसेट करना:
iframe.src = iframe.src;
कैश बस्ट के लिए एक समय टिकट के साथ src रीसेट करना:
iframe.src = iframe.src.split("?")[0] + "?_=" + new Date().getTime();
क्वेरी स्ट्रिंग विकल्प संभव नहीं होने पर src को साफ़ करना (डेटा URI):
var wasSrc = iframe.src
iframe.onload = function() {
iframe.onload = undefined;
iframe.src = wasSrc;
}
यदि आप हैश रास्तों का उपयोग करते हैं (जैसे mywebsite.com/#/my/url) जो हैश पर स्विच करने पर फ़्रेम को ताज़ा नहीं कर सकता है:
<script>
window.onhashchange = function () {
window.setTimeout(function () {
let frame = document.getElementById('myFrame');
if (frame !== null) {frame.replaceWith(frame);}
}, 1000);
}
</script>
दुर्भाग्य से, यदि आप टाइमआउट का उपयोग नहीं करते हैं तो जेएस फ्रेम को सामग्री को लोड करने से पहले बदलने की कोशिश कर सकता है (इस प्रकार पुरानी सामग्री लोड हो रही है)। मैं अभी वर्कअराउंड के बारे में निश्चित नहीं हूं।
यदि आपके पास पृष्ठ के अंदर एकाधिक iFrames हैं, तो यह स्क्रिप्ट उपयोगी हो सकती है। मैं मान रहा हूं कि iFrame स्रोत में एक विशिष्ट मूल्य है जिसका उपयोग विशिष्ट iFrame खोजने के लिए किया जा सकता है।
var iframes = document.getElementsByTagName('iframe');
var yourIframe = null
for(var i=0; i < iframes.length ;i++){
var source = iframes[i].attributes.src.nodeValue;
if(source.indexOf('/yourSorce') > -1){
yourIframe = iframes[i];
}
}
var iSource = yourIframe.attributes.src.nodeValue;
yourIframe.src = iSource;
"/ YourSource" को आपकी आवश्यकता के मान से बदलें।
यदि आपका iframe का URL नहीं बदलता है, तो आप इसे फिर से बना सकते हैं।
यदि आपका आइफ्रेम एक ही मूल (प्रोटोकॉल स्कीम, होस्टनाम और पोर्ट) से नहीं है, तो आप आईफ्रेम में वर्तमान URL को नहीं जान पाएंगे, इसलिए आपको अपनी मूल विंडो के साथ संदेशों का आदान-प्रदान करने के लिए आइफ्रेम दस्तावेज में एक स्क्रिप्ट की आवश्यकता होगी ( पृष्ठ की खिड़की)।
Iframe दस्तावेज़ में:
window.addEventListener('change', function(e) {
if (e.data === 'Please reload yourself') {
var skipCache = true; // true === Shift+F5
window.location.reload(skipCache);
}
}
आपके पृष्ठ में:
var iframe = document.getElementById('my-iframe');
var targetOrigin = iframe.src; // Use '*' if you don't care
iframe.postMessage('Please reload yourself', targetOrigin);
आप इसका उपयोग कर सकते हैं:
जे एस:
function refreshFrame(){
$('#myFrame').attr('src', "http://blablab.com?v=");
}
एचटीएमएल:
`<iframe id="myFrame" src=""></iframe>`
जेएस फिडल: https://jsfiddle.net/wpb20vzx/