Ich habe zwei Iframes auf einer Seite und einer nimmt Änderungen am anderen vor, aber der andere Iframe zeigt die Änderung erst an, wenn ich sie aktualisiere. Gibt es eine einfache Möglichkeit, diesen Iframe mit jQuery zu aktualisieren?
<div class="project">
<iframe id="currentElement" class="myframe" name="myframe" src="http://somesite.com/something/new"></iframe>
</div>
javascript
jquery
html
iframe
Matt Elhotiby
quelle
quelle
Antworten:
Wenn sich der Iframe nicht in einer anderen Domain befindet, können Sie Folgendes tun:
Da sich der Iframe jedoch in einer anderen Domäne befindet, wird Ihnen
contentDocument
durch die Richtlinie mit demselben Ursprung der Zugriff auf die Eigenschaft des Iframes verweigert .Sie können den domänenübergreifenden Iframe jedoch hackig zum erneuten Laden zwingen, wenn Ihr Code auf der übergeordneten Seite des Iframes ausgeführt wird, indem Sie das src-Attribut auf sich selbst setzen. So was:
Wenn Sie versuchen, den Iframe von einem anderen Iframe neu zu laden, haben Sie kein Glück, das ist nicht möglich.
quelle
document.getElementById(FrameID).contentWindow.location.reload(true);
iframe.contentDocument.location=iframe.src;
stattdessen so etwas gemacht, was großartig funktioniert hat$('#map_iframe').attr('src', $('#map_iframe').attr('src'));
quelle
(function (elem) { elem.src = elem.src; }($('#iframe')[0]));
document.getElementById(FrameID).contentWindow.location.reload(true);
funktionieren Javascript-Lösungen wie nicht richtig. Diese Antwort funktioniert besser.Sie können auch jquery verwenden. Dies ist das gleiche, was Alex vorgeschlagen hat, nur mit JQuery:
quelle
var f = $('#iframeX') ; f.attr( 'src', f.attr( 'src' ))
kann robuster zu pflegen und zu lesen seinLaden Sie einen Iframe mit jQuery neu
Machen Sie einen Link innerhalb des Iframes, sagen wir mit id = "reload", und verwenden Sie dann den folgenden Code
und Sie können mit allen Browsern arbeiten.
Laden Sie einen Iframe mit HTML neu (keine Java Script-Anforderung).
Es hat eine einfachere Lösung: die funktioniert ohne JavaScript in (FF, Webkit)
Machen Sie einfach einen Anker inSide Ihrem Iframe
Wenn Sie auf diesen Anker klicken, wird nur Ihr Iframe aktualisiert
Aber wenn Sie den Parameter send zu Ihrem iframe haben es dann tun , wie folgend.
brauche keine Seiten-URL, weil -> target = "_ SELF" es für dich tut
quelle
Mit jquery können Sie Folgendes verwenden:
quelle
Ich erwidere nur Alex 'Antwort, aber mit jQuery
quelle
Hier ist ein anderer Weg
quelle
$( '#iframe' ).attr('src', $( '#iframe' ).attr('src'));
Ich bin mir ziemlich sicher, dass alle obigen Beispiele den Iframe nur mit seiner ursprünglichen src neu laden, nicht mit seiner aktuellen URL.
Das sollte mit der aktuellen URL neu geladen werden.
quelle
Wenn Sie domänenübergreifend sind, wird durch einfaches Zurücksetzen des src auf dieselbe URL nicht immer ein erneutes Laden ausgelöst, selbst wenn sich der Speicherort-Hash ändert.
Dieses Problem ist beim manuellen Erstellen von Twitter-Schaltflächen-Iframes aufgetreten, die beim Aktualisieren der URLs nicht aktualisiert wurden.
Twitter-ähnliche Schaltflächen haben die Form:
.../tweet_button.html#&_version=2&count=none&etc=...
Da Twitter das Dokumentfragment für die URL verwendet, wurde beim Ändern des Hash / Fragments die Quelle nicht neu geladen, und die Schaltflächenziele spiegelten nicht meinen neuen, von Ajax geladenen Inhalt wider.
Sie können einen Abfragezeichenfolgenparameter anhängen, um das Neuladen zu erzwingen (z.
"?_=" + Math.random()
Dies verschwendet jedoch Bandbreite, insbesondere in diesem Beispiel, in dem der Ansatz von Twitter speziell versucht hat, das Caching zu aktivieren.Um etwas neu zu laden, das sich nur mit Hash-Tags ändert, müssen Sie das Element entfernen oder das ändern
src
, warten, bis der Thread beendet ist, und ihn dann wieder zuweisen. Wenn die Seite noch zwischengespeichert ist, sollte dies keinen Netzwerktreffer erfordern, löst jedoch das erneute Laden des Frames aus.Update : Mit diesem Ansatz werden unerwünschte Verlaufselemente erstellt. Entfernen Sie stattdessen jedes Mal das iframe-Element und erstellen Sie es neu, damit diese Schaltfläche back () wie erwartet funktioniert. Auch schön, den Timer nicht zu haben.
quelle
Ich erwidere nur Alex 'Antwort, aber mit jQuery:
Oder Sie können eine kleine Funktion verwenden:
Ich hoffe, es hilft.
quelle
quelle
Dies ist mit einfachem JavaScript möglich.
window.frames
Syntax, um eine JavaScript-Funktion in iframe2 auszulösen. Stellen Sie einfach sicher, dass Sie dasid
/name
von iframe2 und nicht das verwendensrc
.quelle
// aktualisiere alle iframes auf der Seite
quelle
Die browserübergreifende Lösung lautet:
Dies ist besonders nützlich, wenn <iframe> das Ziel eines <form> ist
quelle
Gelöst! Ich registriere mich bei stockoverflow, um Ihnen die einzige Lösung (zumindest in ASP.NET/IE/FF/Chrome) mitzuteilen, die funktioniert! Die Idee ist, den innerHTML-Wert eines div durch seinen aktuellen innerHTML-Wert zu ersetzen.
Hier ist das HTML-Snippet:
Und mein Javascript-Code:
Hoffe das hilft.
quelle
runat="server"
nicht anwendbar. 2. Warum alle Kappen fürIFRAME
? 3. Dimensionsattributwerte haben keine Einheiten. 4.frameborder
ist veraltetSie müssen verwenden
Um die Quelle des Iframes und seine URL zu finden, muss er sich in derselben Domäne des übergeordneten Elements befinden.
quelle
Sie können es so machen
quelle
Die folgende Lösung wird sicher funktionieren:
quelle