Saya memiliki halaman web dengan IFrame dan Button, setelah tombol ditekan saya perlu IFrame untuk di-refresh. Apakah ini mungkin, jika demikian bagaimana? Saya mencari dan tidak dapat menemukan jawaban.
Saya memiliki halaman web dengan IFrame dan Button, setelah tombol ditekan saya perlu IFrame untuk di-refresh. Apakah ini mungkin, jika demikian bagaimana? Saya mencari dan tidak dapat menemukan jawaban.
Jawaban:
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);
Ini akan membantu:
document.getElementById('FrameID').contentWindow.location.reload(true);
EDIT: Memperbaiki nama objek sesuai komentar @ Joro.
reload(true)
Anda akan menggunakan ini:document.getElementById('FrameID').contentWindow.location.replace(new_url);
asalkan iframe dimuat dari domain yang sama, Anda dapat melakukan ini, yang lebih masuk akal:
iframe.contentWindow.location.reload();
Bekerja untuk IE, Mozzila, Chrome
document.getElementById('YOUR IFRAME').contentDocument.location.reload(true);
Anda dapat menggunakan metode sederhana ini
function reloadFrame(iFrame) {
iFrame.parentNode.replaceChild(iFrame.cloneNode(), iFrame);
}
Dapatkan ini dari sini
var f = document.getElementById('iframe1');
f.src = f.src;
2017:
Jika di domain yang sama saja:
iframe.contentWindow.location.reload();
akan bekerja.
Mengatur ulang atribut src secara langsung:
iframe.src = iframe.src;
Menyetel ulang src dengan stempel waktu untuk perusakan cache:
iframe.src = iframe.src.split("?")[0] + "?_=" + new Date().getTime();
Mengosongkan src saat opsi string kueri tidak dimungkinkan (URI Data):
var wasSrc = iframe.src
iframe.onload = function() {
iframe.onload = undefined;
iframe.src = wasSrc;
}
Jika Anda menggunakan jalur hash (seperti mywebsite.com/#/my/url) yang mungkin tidak menyegarkan bingkai saat beralih hash:
<script>
window.onhashchange = function () {
window.setTimeout(function () {
let frame = document.getElementById('myFrame');
if (frame !== null) {frame.replaceWith(frame);}
}, 1000);
}
</script>
Sayangnya, jika Anda tidak menggunakan waktu tunggu, JS dapat mencoba mengganti bingkai sebelum halaman selesai memuat konten (dengan demikian memuat konten lama). Saya belum yakin dengan solusinya.
Jika Anda memiliki Beberapa iFrame di dalam halaman, maka skrip ini mungkin berguna. Saya berasumsi ada nilai tertentu di sumber iFrame yang dapat digunakan untuk menemukan iFrame tertentu.
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;
Ganti "/ SumberAnda" dengan nilai yang Anda butuhkan.
Jika URL iframe Anda tidak berubah, Anda dapat membuatnya kembali.
Jika iframe Anda tidak berasal dari asal yang sama (skema protokol, nama host, dan port), Anda tidak akan dapat mengetahui URL saat ini di iframe, jadi Anda memerlukan skrip dalam dokumen iframe untuk bertukar pesan dengan jendela induknya ( jendela halaman).
Dalam dokumen iframe:
window.addEventListener('change', function(e) {
if (e.data === 'Please reload yourself') {
var skipCache = true; // true === Shift+F5
window.location.reload(skipCache);
}
}
Di halaman Anda:
var iframe = document.getElementById('my-iframe');
var targetOrigin = iframe.src; // Use '*' if you don't care
iframe.postMessage('Please reload yourself', targetOrigin);
Anda dapat menggunakan ini:
Js:
function refreshFrame(){
$('#myFrame').attr('src', "http://blablab.com?v=");
}
Html:
`<iframe id="myFrame" src=""></iframe>`
JS Fiddle: https://jsfiddle.net/wpb20vzx/