जावास्क्रिप्ट का उपयोग करके एक IFrame ताज़ा कैसे करें?


121

मेरे पास एक IFrame और एक बटन के साथ एक वेबपेज है, एक बार बटन दबाए जाने के बाद मुझे IFrame को रीफ्रेश करने की आवश्यकता होती है। क्या यह संभव है, यदि ऐसा है तो कैसे? मैंने खोज की और कोई उत्तर नहीं मिला।


जवाबों:


152
var iframe = document.getElementById('youriframe');
iframe.src = iframe.src;

2
यह क्रोम के इस संस्करण में मेरे लिए काम करता है:Version 24.0.1312.56 Ubuntu 12.04 (24.0.1312.56-0ubuntu0.12.04.1)
पॉल ए जुंगविर्थ

3
FYI करें - वर्तमान में (जनवरी 2013 तक) क्रोमियम प्रोजेक्ट बग ( code.google.com/p/chromium/issues/detail?id=172859 ) है, जो दस्तावेज़ इतिहास में जोड़ने के लिए iframe अपडेट का कारण बनता है।
रॉबर्ट एल्टमैन

यदि iFrame पृष्ठ को बदलता है, तो इस विधि ने नेविगेशन खो दिया
एडुआर्डो क्युमो

10
var tmp_src = iframe.src; iframe.src = ''; iframe.src = tmp_src;
गीत

2
क्रोम में यह पूरी तरह से मेरे लिए काम करता हैdocument.getElementById('frame_id').contentDocument.location.reload(true);
हसीब ज़ुल्फ़िकार

104

यह मदद करनी चाहिए:

document.getElementById('FrameID').contentWindow.location.reload(true);

संपादित करें: @ जोरो की टिप्पणी के अनुसार वस्तु का नाम निश्चित।


3
यह IE9 में काम नहीं कर रहा है। आपको कंटेंटवॉच के बजाय कंटेंटविंडो का उपयोग करना चाहिए।
gqn

1
जवाब के लिए धन्यवाद। इसके अतिरिक्त, यदि आप सकारात्मक रूप से iframe के भीतर किसी अन्य पेज के लिए एक ताज़ा करने का कारण होगा तो इसके बजाय reload(true)आप इस का उपयोग करेंगे:document.getElementById('FrameID').contentWindow.location.replace(new_url);
racl101

15
यह विभिन्न मूल (प्रोटोकॉल, होस्टनाम या पोर्ट) के साथ iframes के साथ काम नहीं करता है।
1

18

बशर्ते iframe को एक ही डोमेन से लोड किया गया है, तो आप यह कर सकते हैं, जो थोड़ा अधिक समझ में आता है:

iframe.contentWindow.location.reload();




2

2017:

यदि यह एक ही डोमेन पर है:

iframe.contentWindow.location.reload();

काम करेगा।


1

यहाँ HTML स्निपेट दिया गया है:

<td><iframe name="idFrame" id="idFrame" src="chat.txt" width="468" height="300"></iframe></td>

और मेरा जावास्क्रिप्ट कोड:

window.onload = function(){
setInterval(function(){
    parent.frames['idFrame'].location.href = "chat.txt";
},1000);}

1

सीधे 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;
}

1

यदि आप हैश रास्तों का उपयोग करते हैं (जैसे mywebsite.com/#/my/url) जो हैश पर स्विच करने पर फ़्रेम को ताज़ा नहीं कर सकता है:

<script>
    window.onhashchange = function () {
        window.setTimeout(function () {
            let frame = document.getElementById('myFrame');
            if (frame !== null) {frame.replaceWith(frame);}
        }, 1000);
    }
</script>

दुर्भाग्य से, यदि आप टाइमआउट का उपयोग नहीं करते हैं तो जेएस फ्रेम को सामग्री को लोड करने से पहले बदलने की कोशिश कर सकता है (इस प्रकार पुरानी सामग्री लोड हो रही है)। मैं अभी वर्कअराउंड के बारे में निश्चित नहीं हूं।


0

यदि आपके पास पृष्ठ के अंदर एकाधिक 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" को आपकी आवश्यकता के मान से बदलें।


0

यदि आपका 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);

-2

आप इसका उपयोग कर सकते हैं:

जे एस:

function refreshFrame(){
    $('#myFrame').attr('src', "http://blablab.com?v=");
}

एचटीएमएल:

`<iframe id="myFrame" src=""></iframe>`

जेएस फिडल: https://jsfiddle.net/wpb20vzx/


1
सवाल का jQuery नामक लोकप्रिय जावास्क्रिप्ट लाइब्रेरी से कोई लेना-देना नहीं है ।
जॉन वीज़

Math.round () क्या करेगा? यह यहां पूरी तरह से बेकार लग रहा है।
डेविड आर।

नमस्ते मैंने Math.round () का उपयोग किया है क्योंकि कुछ ब्राउज़र Url को कैश कर सकते हैं - पृष्ठ इसलिए काम नहीं कर रहा है।
फेरहत कोउर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.