Wiem, że są pewne narzędzia i techniki opóźniające ładowanie javascript, ale mam element iframe, który chciałbym opóźnić ładowanie, dopóki cała reszta strony nie zakończy pobierania i renderowania (iframe jest ukryta, nie zostanie ujawniony, dopóki ktoś nie kliknie określonej zakładki na stronie.Czy istnieje sposób na opóźnienie obciążenia elementu iframe? Wszelkie sugestie będą mile widziane.Dzięki!Opóźnienie ładowania elementu iframe?
Odpowiedz
z jQuery to proste!
albo dołączyć swój kod, który ładuje i ramka wewnątrz $()
lub użyj $(document).ready(function(){})
oba są takie same i wykonają twój kod po tym, jak DOM będzie gotowy!
np.
$(document).ready(function(){
$('iframe#iframe_id').attr('src', 'iframe_url');
});
zobacz więcej na http://www.learningjquery.com/2006/09/introducing-document-ready
Użyj JavaScript w zdarzeniu onLoad lub w przycisku kliknij obsługi, aby ustawić atrybut src iframe.
Albo mój ulubiony użycie
setTimeout('your app', 6000)
To pozwoli czekać x liczba milisekund wywołać dowolną funkcję ....
Co dokładnie oznacza "Twoja aplikacja" w swoim przykładzie? – fresskoma
nie wiem, czy trzeba uruchomić bez javascript. Ale najlepiej Methode jest zmieniają src bezpośrednio po iframe:
<iframe id="myIframe" src="http://.." />
<script type="text/javascript">
var iframe = document.getElementById('myIframe'),src = iframe.src;
iframe.src = '';
document.onload = function(){iframe.src = src;}
</script>
Korzystanie $ (document) .ready rozpocznie rendering iframe bezpośrednio po DOM Drzewo jest budować, ale przed wszystkim od zawartości w twoja strona jest załadowana, więc myślę, że to nie jest to, czego chcesz.
jQuery ma .load zdarzeń, która jest taka sama jak onload (po wszystkie zasoby są ładowane)
$(window).load(function(){ iframe.src = src; }
Hej Eskimo- Zakładam, że twoja odpowiedź zadziałałaby, chociaż nie byłam w stanie sprawić, żeby działała (jestem pewien, że to było spowodowane problemem po mojej stronie) :) Nie mam wystarczająco dużo reputacji, aby cię głosować jeszcze, ale dzięki za sugestię! – Sean
Można również stosować display: none do iframe z CSS, a następnie użyć .Show jQuery tak :
$(document).ready(function(){
$('iframe.class_goes_here').show();
});
Iframe nadal będzie się ładować, nawet jeśli w podtekście 'display: none' dom - po prostu się nie pokaże. –
działa to dla mnie, ale ma problemy, jeśli w ogóle zmienić kod:
function loadIFrame() {
window.frames['BodyFrame'].document.location.href = "iframe.html";
}
function delayedLoad() {
window.setTimeout(loadIFrame2, 5000);
}
Zastosowanie:
<iframe src="" onLoad="delayedLoad()"></iframe>
Można użyć atrybutu odroczenia gdy ładunek ostatni po css, js itp:
iframe defer src="//player.vimeo.com/video/89455262"
to nie działa –
obciążenia iFrame po załadowaniu strony Z JQuery i trochę html i js
// Javascript
$(window).bind("load", function() {
$('#dna_video').prepend('<iframe src="//player.vimeo.com/video/86554151" width="680" height="383" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>');
});
<!-- Append JQuery-->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<!-- HTML -->
<div id="dna_video"></div>
Okazuje się, że twoja pierwsza linia rozwiązała wszystko. Użyłem strasznego szablonu dla kart pobranych z losowej strony internetowej i podobało mi się renderowanie ukrytego elementu iframe przed wszystkim, co zostało w pełni załadowane. Po przełączeniu do używania kart jQuery (które wyglądały o wiele ładniej do rozruchu!), Renderowanie iframe nie było już problemem. jQuery ROCKS! Dzięki :) – Sean
W IE może to spowodować uszkodzenie przycisku wstecz, ponieważ dodaje nowe źródło iframe do historii przeglądarki. – Sjoerd
Liczba osób odpowiadających w jQuery na pytanie o JavaScript jest obecnie przerażająca. –