Ich habe eine Webseite mit einem IFrame und einem Button. Sobald der Button gedrückt wird, muss der IFrame aktualisiert werden. Ist das möglich, wenn ja wie? Ich suchte und konnte keine Antworten finden.
var iframe = document.getElementById('youriframe');
iframe.src = iframe.src;
Das sollte helfen:
document.getElementById('FrameID').contentWindow.location.reload(true);
BEARBEITEN: Der Objektname wurde per Kommentar von @ Joro korrigiert.
vorausgesetzt, dass der iframe von derselben Domäne geladen wird, können Sie dies tun, was ein wenig sinnvoller ist:
iframe.contentWindow.location.reload();
Funktioniert für IE, Mozzila, Chrome
document.getElementById('YOUR IFRAME').contentDocument.location.reload(true);
Sie können diese einfache Methode verwenden
function reloadFrame(iFrame) {
iFrame.parentNode.replaceChild(iFrame.cloneNode(), iFrame);
}
2017:
Wenn es sich in derselben Domain befindet, einfach:
iframe.contentWindow.location.reload();
wird funktionieren.
Hab das von hier
var f = document.getElementById('iframe1');
f.src = f.src;
Hier ist das HTML-Snippet:
<td><iframe name="idFrame" id="idFrame" src="chat.txt" width="468" height="300"></iframe></td>
Und mein Javascript-Code:
window.onload = function(){
setInterval(function(){
parent.frames['idFrame'].location.href = "chat.txt";
},1000);}
Das src-Attribut direkt zurücksetzen:
iframe.src = iframe.src;
Src mit einem Zeitstempel für Cache-Busting zurücksetzen:
iframe.src = iframe.src.split("?")[0] + "?_=" + new Date().getTime();
Löschen der src, wenn die Abfragezeichenfolge nicht möglich ist (Daten-URI):
var wasSrc = iframe.src
iframe.onload = function() {
iframe.onload = undefined;
iframe.src = wasSrc;
}
Wenn Sie Hash-Pfade verwenden (wie mywebsite.com/#/my/url), die Frames beim Wechseln des Hashes möglicherweise nicht aktualisieren:
<script>
window.onhashchange = function () {
window.setTimeout(function () {
let frame = document.getElementById('myFrame');
if (frame !== null) {frame.replaceWith(frame);}
}, 1000);
}
</script>
Wenn Sie das Zeitlimit nicht verwenden, versucht JS möglicherweise, den Frame zu ersetzen, bevor die Seite mit dem Laden des Inhalts fertig ist (und somit den alten Inhalt lädt). Ich bin mir der Problemlösung noch nicht sicher.
Wenn sich mehrere iFrames auf der Seite befinden, kann dieses Skript hilfreich sein. Ich nehme an, es gibt einen bestimmten Wert in der iFrame-Quelle, mit dem der bestimmte iFrame gesucht werden kann.
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;
Ersetzen Sie "/ yourSource" durch den Wert, den Sie benötigen.
Wenn sich die URL Ihres iframes nicht ändert, können Sie sie einfach neu erstellen.
Wenn Ihr iframe nicht aus demselben Origin stammt (Protokollschema, Hostname und Port), können Sie die aktuelle URL im iframe nicht kennen. Daher benötigen Sie ein Skript im iframe-Dokument, um Nachrichten mit dem übergeordneten Fenster auszutauschen ( das Fenster der Seite).
Im iframe-Dokument:
window.addEventListener('change', function(e) {
if (e.data === 'Please reload yourself') {
var skipCache = true; // true === Shift+F5
window.location.reload(skipCache);
}
}
In deiner Seite:
var iframe = document.getElementById('my-iframe');
var targetOrigin = iframe.src; // Use '*' if you don't care
iframe.postMessage('Please reload yourself', targetOrigin);