Se hai provato tutti gli altri suggerimenti e non sei riuscito a far funzionare nessuno di loro (come non potevo), ecco qualcosa che puoi provare che potrebbe essere utile.
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);
});
Inizialmente ho deciso di provare a risparmiare un po 'di tempo con RWD e test cross-browser. Volevo creare una rapida pagina che ospitasse un gruppo di iframe, organizzati in gruppi che avrei mostrato / nascosto a piacimento. Logicamente vorresti essere in grado di aggiornare facilmente e rapidamente qualsiasi dato frame.
Devo notare che il progetto a cui sto lavorando attualmente, quello in uso in questo banco di prova, è un sito di una pagina con posizioni indicizzate (es. Index.html # home). Ciò potrebbe aver avuto a che fare con il motivo per cui non sono riuscito a ottenere nessuna delle altre soluzioni per aggiornare il mio frame particolare.
Detto questo, so che non è la cosa più pulita del mondo, ma funziona per i miei scopi. Spero che questo aiuti qualcuno. Ora, se solo potessi capire come impedire all'iframe di scorrere la pagina principale ogni volta che c'è animazione all'interno dell'iframe ...
MODIFICARE:
Mi sono reso conto che questo non "aggiorna" l'iframe come speravo. Ricaricherà la fonte iniziale dell'iframe. Non riesco ancora a capire perché non riesco a far funzionare nessuna delle altre opzioni.
AGGIORNAMENTO:
Il motivo per cui non sono riuscito a far funzionare nessuno degli altri metodi è perché li stavo testando in Chrome e Chrome non ti consentirà di accedere al contenuto di un iframe (Spiegazione: È probabile che le versioni future del contenuto di Chrome supportino Windows / contentDocument quando iFrame carica un file html locale dal file html locale? ) se non proviene dalla stessa posizione (per quanto ne capisco). Dopo ulteriori test, non riesco nemmeno ad accedere a contentWindow in FF.
JS modificato
$('.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
attributo su se stesso non è pulito? Sembra essere l'unica soluzione che funziona su tutti i browser e su tutti i domini