Wenn Sie alle anderen Vorschläge ausprobiert haben und keinen davon zum Laufen bringen konnten (wie ich es nicht konnte), können Sie Folgendes ausprobieren, das möglicherweise nützlich ist.
HTML
<a class="refresh-this-frame" rel="#iframe-id-0">Refresh</a>
<iframe src="" id="iframe-id-0"></iframe>
JS
$('.refresh-this-frame').click(function() {
var thisIframe = $(this).attr('rel');
var currentState = $(thisIframe).attr('src');
function removeSrc() {
$(thisIframe).attr('src', '');
}
setTimeout (removeSrc, 100);
function replaceSrc() {
$(thisIframe).attr('src', currentState);
}
setTimeout (replaceSrc, 200);
});
Ich wollte zunächst versuchen, mit RWD- und Cross-Browser-Tests Zeit zu sparen. Ich wollte eine kurze Seite erstellen, die eine Reihe von Iframes enthielt, die in Gruppen organisiert waren, die ich nach Belieben ein- und ausblenden würde. Logischerweise möchten Sie in der Lage sein, einen bestimmten Frame einfach und schnell zu aktualisieren.
Ich sollte beachten, dass das Projekt, an dem ich gerade arbeite, das in diesem Prüfstand verwendet wird, eine einseitige Site mit indizierten Speicherorten ist (z. B. index.html # home). Das mag etwas damit zu tun haben, warum ich keine der anderen Lösungen zum Aktualisieren meines speziellen Rahmens bekommen konnte.
Trotzdem weiß ich, dass es nicht das sauberste auf der Welt ist, aber es funktioniert für meine Zwecke. Hoffe das hilft jemandem. Wenn ich nur herausfinden könnte, wie ich verhindern kann, dass der Iframe jedes Mal, wenn sich eine Animation im Iframe befindet, die übergeordnete Seite scrollt ...
BEARBEITEN:
Mir wurde klar, dass dies den Iframe nicht so "auffrischt", wie ich es mir erhofft hatte. Es wird jedoch die ursprüngliche Quelle des Iframes neu geladen. Ich kann immer noch nicht herausfinden, warum ich keine der anderen Optionen zum Laufen bringen konnte.
UPDATE:
Der Grund, warum ich keine der anderen Methoden zum Laufen bringen konnte, ist, dass ich sie in Chrome getestet habe und Sie in Chrome nicht auf den Inhalt eines Iframes zugreifen können (Erläuterung: Ist es wahrscheinlich, dass zukünftige Versionen von Chrome contentWindow unterstützen? / contentDocument, wenn iFrame eine lokale HTML-Datei aus einer lokalen HTML-Datei lädt? ), wenn sie nicht vom selben Speicherort stammt (soweit ich das verstehe). Bei weiteren Tests kann ich auch in FF nicht auf contentWindow zugreifen.
GEÄNDERT JS
$('.refresh-this-frame').click(function() {
var targetID = $(this).attr('rel');
var targetSrc = $(targetID).attr('src');
var cleanID = targetID.replace("#","");
var chromeTest = ( navigator.userAgent.match(/Chrome/g) ? true : false );
var FFTest = ( navigator.userAgent.match(/Firefox/g) ? true : false );
if (chromeTest == true) {
function removeSrc() {
$(targetID).attr('src', '');
}
setTimeout (removeSrc, 100);
function replaceSrc() {
$(targetID).attr('src', targetSrc);
}
setTimeout (replaceSrc, 200);
}
if (FFTest == true) {
function removeSrc() {
$(targetID).attr('src', '');
}
setTimeout (removeSrc, 100);
function replaceSrc() {
$(targetID).attr('src', targetSrc);
}
setTimeout (replaceSrc, 200);
}
if (chromeTest == false && FFTest == false) {
var targetLoc = (document.getElementById(cleanID).contentWindow.location).toString();
function removeSrc() {
$(targetID).attr('src', '');
}
setTimeout (removeSrc, 100);
function replaceSrc2() {
$(targetID).attr('src', targetLoc);
}
setTimeout (replaceSrc2, 200);
}
});
src
Attributs auf sich selbst nicht sauber ist? Es scheint die einzige Lösung zu sein, die über Browser und Domänen hinweg