Ho una pagina web con un IFrame e un pulsante, una volta premuto il pulsante ho bisogno che l'IFrame venga aggiornato. È possibile, se sì come? Ho cercato e non sono riuscito a trovare alcuna risposta.
Ho una pagina web con un IFrame e un pulsante, una volta premuto il pulsante ho bisogno che l'IFrame venga aggiornato. È possibile, se sì come? Ho cercato e non sono riuscito a trovare alcuna risposta.
Risposte:
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);
Questo dovrebbe aiutare:
document.getElementById('FrameID').contentWindow.location.reload(true);
EDIT: corretto il nome dell'oggetto secondo il commento di @ Joro.
reload(true)
utilizzare questo:document.getElementById('FrameID').contentWindow.location.replace(new_url);
a condizione che l'iframe sia caricato dallo stesso dominio, puoi farlo, il che ha un po 'più senso:
iframe.contentWindow.location.reload();
Funziona per IE, Mozzila, Chrome
document.getElementById('YOUR IFRAME').contentDocument.location.reload(true);
Puoi usare questo semplice metodo
function reloadFrame(iFrame) {
iFrame.parentNode.replaceChild(iFrame.cloneNode(), iFrame);
}
L'ho preso da qui
var f = document.getElementById('iframe1');
f.src = f.src;
2017:
Se si trova nello stesso dominio solo:
iframe.contentWindow.location.reload();
funzionerà.
Reimpostazione diretta dell'attributo src:
iframe.src = iframe.src;
Reimpostazione di src con un timestamp per il busting della cache:
iframe.src = iframe.src.split("?")[0] + "?_=" + new Date().getTime();
Cancellazione di src quando l'opzione delle stringhe di query non è possibile (URI dati):
var wasSrc = iframe.src
iframe.onload = function() {
iframe.onload = undefined;
iframe.src = wasSrc;
}
Se utilizzi percorsi hash (come mywebsite.com/#/my/url) che potrebbero non aggiornare i frame al cambio di hash:
<script>
window.onhashchange = function () {
window.setTimeout(function () {
let frame = document.getElementById('myFrame');
if (frame !== null) {frame.replaceWith(frame);}
}, 1000);
}
</script>
Sfortunatamente, se non utilizzi il timeout, JS può provare a sostituire il frame prima che la pagina abbia terminato il caricamento del contenuto (caricando così il vecchio contenuto). Non sono ancora sicuro della soluzione alternativa.
Se hai più iFrame all'interno della pagina, questo script potrebbe essere utile. Suppongo che ci sia un valore specifico nella sorgente iFrame che può essere utilizzato per trovare l'iFrame specifico.
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;
Sostituisci "/ yourSource" con il valore che ti serve.
Se l'URL del tuo iframe non cambia, puoi semplicemente ricrearlo.
Se il tuo iframe non proviene dalla stessa origine (schema di protocollo, nome host e porta), non sarai in grado di conoscere l'URL corrente nell'iframe, quindi avrai bisogno di uno script nel documento iframe per scambiare messaggi con la sua finestra principale ( la finestra della pagina).
Nel documento iframe:
window.addEventListener('change', function(e) {
if (e.data === 'Please reload yourself') {
var skipCache = true; // true === Shift+F5
window.location.reload(skipCache);
}
}
Nella tua pagina:
var iframe = document.getElementById('my-iframe');
var targetOrigin = iframe.src; // Use '*' if you don't care
iframe.postMessage('Please reload yourself', targetOrigin);
Puoi usare questo:
js:
function refreshFrame(){
$('#myFrame').attr('src', "http://blablab.com?v=");
}
html:
`<iframe id="myFrame" src=""></iframe>`
JS Fiddle: https://jsfiddle.net/wpb20vzx/