Bagaimana cara menyegarkan IFrame menggunakan Javascript?


Jawaban:


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

2
Ini berfungsi untuk saya di versi Chrome ini:Version 24.0.1312.56 Ubuntu 12.04 (24.0.1312.56-0ubuntu0.12.04.1)
Paul A Jungwirth

3
FYI - Saat ini (per Januari 2013) bug proyek Chromium ( code.google.com/p/chromium/issues/detail?id=172859 ) yang menyebabkan pembaruan iframe ditambahkan ke riwayat dokumen.
Robert Altman

Jika ke iFrame mengubah halaman, metode ini kehilangan navigasi
Eduardo Cuomo

10
var tmp_src = iframe.src; iframe.src = ''; iframe.src = tmp_src;
Lyfing

2
ini bekerja dengan sempurna untuk saya di chromedocument.getElementById('frame_id').contentDocument.location.reload(true);
Haseeb Zulfiqar

104

Ini akan membantu:

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

EDIT: Memperbaiki nama objek sesuai komentar @ Joro.


3
Ini tidak berfungsi di IE9. Anda harus menggunakan contentWindow, bukan contentDocument.
gotqn

1
Terima kasih atas jawabannya. Selain itu, Jika Anda harus secara positif me-refresh halaman lain ke halaman lain dalam iframe, alih-alih reload(true)Anda akan menggunakan ini:document.getElementById('FrameID').contentWindow.location.replace(new_url);
racl101

15
Ini tidak berfungsi dengan iframe dengan asal berbeda (protokol, nama host, atau porta).
michelpm

18

asalkan iframe dimuat dari domain yang sama, Anda dapat melakukan ini, yang lebih masuk akal:

iframe.contentWindow.location.reload();

7

Bekerja untuk IE, Mozzila, Chrome

document.getElementById('YOUR IFRAME').contentDocument.location.reload(true);

4

Anda dapat menggunakan metode sederhana ini

function reloadFrame(iFrame) {

    iFrame.parentNode.replaceChild(iFrame.cloneNode(), iFrame);

}

2

Dapatkan ini dari sini

var f = document.getElementById('iframe1');
f.src = f.src;

Jika ke iFrame mengubah halaman, metode ini kehilangan navigasi
Eduardo Cuomo

2

2017:

Jika di domain yang sama saja:

iframe.contentWindow.location.reload();

akan bekerja.


1

Berikut ini cuplikan HTML-nya:

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

Dan kode Javascript saya:

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

1

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;
}

1

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.


0

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.


0

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);

-2

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/


1
Pertanyaannya tidak ada hubungannya dengan pustaka JavaScript populer yang disebut jQuery.
John Weisz

Apa yang akan dilakukan Math.round ()? Ini terlihat sangat tidak berguna di sini.
Davide R.

Hai, saya menggunakan Math.round () Karena Beberapa Browser dapat menyimpan Url - halaman sehingga penyegaran tidak berfungsi.
Ferhat KOÇER
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.