Yanıtlar:
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);
Bu yardımcı olmalı:
document.getElementById('FrameID').contentWindow.location.reload(true);
DÜZENLE: @ Joro'nun yorumuna göre nesne adı düzeltildi.
reload(true)
kullanırsınız:document.getElementById('FrameID').contentWindow.location.replace(new_url);
iframe'in aynı alandan yüklenmesi koşuluyla, bunu yapabilirsiniz, bu biraz daha mantıklıdır:
iframe.contentWindow.location.reload();
IE, Mozzila, Chrome için çalışıyor
document.getElementById('YOUR IFRAME').contentDocument.location.reload(true);
Bu basit yöntemi kullanabilirsiniz
function reloadFrame(iFrame) {
iFrame.parentNode.replaceChild(iFrame.cloneNode(), iFrame);
}
Bunu buradan aldım
var f = document.getElementById('iframe1');
f.src = f.src;
2017:
Aynı alan adındaysa:
iframe.contentWindow.location.reload();
çalışacak.
Src özelliğini doğrudan sıfırlamak:
iframe.src = iframe.src;
Önbellek bozma için src'yi bir zaman damgasıyla sıfırlama:
iframe.src = iframe.src.split("?")[0] + "?_=" + new Date().getTime();
Sorgu dizeleri seçeneği mümkün olmadığında src'yi temizleme (Veri URI'si):
var wasSrc = iframe.src
iframe.onload = function() {
iframe.onload = undefined;
iframe.src = wasSrc;
}
Karma yollar kullanıyorsanız (mywebsite.com/#/my/url gibi), karma geçişte çerçeveleri yenilemeyebilir:
<script>
window.onhashchange = function () {
window.setTimeout(function () {
let frame = document.getElementById('myFrame');
if (frame !== null) {frame.replaceWith(frame);}
}, 1000);
}
</script>
Maalesef, zaman aşımını kullanmazsanız JS, sayfa içeriği yüklemeyi bitirmeden (dolayısıyla eski içeriği yüklemeden) çerçeveyi değiştirmeyi deneyebilir. Henüz çözümden emin değilim.
Sayfanın içinde Birden Fazla iFrame varsa, bu komut dosyası faydalı olabilir. İFrame kaynağında, belirli iFrame'i bulmak için kullanılabilecek belirli bir değer olduğunu varsayıyorum.
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" u ihtiyacınız olan değerle değiştirin.
İframe'inizin URL'si değişmezse, onu yeniden oluşturabilirsiniz.
İframe'iniz aynı kaynaktan değilse (protokol şeması, ana bilgisayar adı ve bağlantı noktası), iframe'deki geçerli URL'yi bilemezsiniz, bu nedenle iframe belgesinde üst penceresiyle mesaj alışverişi yapmak için bir komut dosyasına ihtiyacınız olacaktır ( sayfanın penceresi).
İframe belgesinde:
window.addEventListener('change', function(e) {
if (e.data === 'Please reload yourself') {
var skipCache = true; // true === Shift+F5
window.location.reload(skipCache);
}
}
Sayfanızda:
var iframe = document.getElementById('my-iframe');
var targetOrigin = iframe.src; // Use '*' if you don't care
iframe.postMessage('Please reload yourself', targetOrigin);
Bunu kullanabilirsiniz:
js:
function refreshFrame(){
$('#myFrame').attr('src', "http://blablab.com?v=");
}
Html:
`<iframe id="myFrame" src=""></iframe>`
JS Fiddle: https://jsfiddle.net/wpb20vzx/