Jeśli wypróbowałeś wszystkie inne sugestie i nie udało Ci się uruchomić żadnej z nich (tak jak ja nie mogłem), oto coś, co możesz wypróbować, co może być przydatne.
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);
});
Początkowo próbowałem zaoszczędzić trochę czasu dzięki RWD i testowaniu w różnych przeglądarkach. Chciałem stworzyć szybką stronę zawierającą kilka elementów iframe, zorganizowanych w grupy, które chciałbym pokazywać / ukrywać do woli. Logicznie rzecz biorąc, chcesz mieć możliwość łatwego i szybkiego odświeżenia dowolnej klatki.
Powinienem zauważyć, że projekt, nad którym obecnie pracuję, ten wykorzystywany w tym stanowisku testowym, jest jednostronicową witryną z indeksowanymi lokalizacjami (np. Index.html # home). To mogło mieć coś wspólnego z tym, że nie mogłem znaleźć żadnego z innych rozwiązań, aby odświeżyć moją ramkę.
Powiedziawszy to, wiem, że nie jest to najczystsza rzecz na świecie, ale działa na moje potrzeby. Mam nadzieję, że to komuś pomoże. Teraz gdybym tylko mógł wymyślić, jak powstrzymać iframe przed przewijaniem strony nadrzędnej za każdym razem, gdy wewnątrz iframe znajduje się animacja ...
EDYCJA:
Zdałem sobie sprawę, że to nie „odświeża” iframe, jak się spodziewałem. Jednak przeładuje początkowe źródło iframe. Nadal nie mogę zrozumieć, dlaczego nie udało mi się uruchomić żadnej innej opcji.
AKTUALIZACJA:
Powodem, dla którego nie udało mi się uruchomić żadnej z innych metod, jest to, że testowałem je w Chrome, a Chrome nie pozwala na dostęp do treści elementu iframe (Objaśnienie: Czy prawdopodobne jest, że przyszłe wydania zawartości obsługującej ChromeWindow / contentDocument, gdy iFrame ładuje lokalny plik HTML z lokalnego pliku HTML? ), jeśli nie pochodzi on z tej samej lokalizacji (o ile rozumiem). Po dalszych testach nie mogę również uzyskać dostępu do contentWindow w FF.
ZMIENIONY 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
atrybutu nie jest czyste? Wydaje się, że jest to jedyne rozwiązanie działające w różnych przeglądarkach i domenach