2009-10-19 5 views
8

Je sais qu'il existe des outils et des techniques pour retarder la charge de javascript, mais j'ai un iframe que je voudrais retarder le chargement jusqu'à ce que le reste de la page ait fini le téléchargement et le rendu (l'iframe est caché Ne pas être révélé jusqu'à ce que quelqu'un clique sur un onglet particulier sur la page.Il ya un moyen de retarder la charge d'un iframe? Toutes les suggestions seraient très appréciées.Merci!Retarder le chargement de l'iframe?

Répondre

6

avec jquery il est facile!

soit joindre votre code qui charge le i cadre dans un $() ou utiliser $(document).ready(function(){}) ces deux sont les mêmes et exécuterait votre code après que le DOM est prêt!

par exemple.

$(document).ready(function(){ 
    $('iframe#iframe_id').attr('src', 'iframe_url');  
}); 

voir plus à http://www.learningjquery.com/2006/09/introducing-document-ready

+0

Il s'avère que votre première ligne a tout résolu.J'ai utilisé un modèle horrible pour les onglets que j'ai téléchargés à partir d'un site Web aléatoire, et il aimait rendre mon iframe caché devant tout jusqu'à ce qu'il soit complètement chargé. Lorsque j'ai basculé vers l'utilisation des onglets jquery (ce qui était beaucoup plus agréable à démarrer!), Le rendu iframe n'était plus un problème. jQuery ROCKS! Merci :) – Sean

+0

Dans IE, cela peut casser le bouton de retour, car il ajoute la nouvelle source iframe à l'historique du navigateur. – Sjoerd

+5

Le nombre de personnes répondant à jQuery lorsqu'on leur demande Javascript est effrayant ces jours-ci. –

4

Utilisez Javascript dans l'événement onLoad, ou dans le bouton cliquez sur gestionnaire, pour définir l'attribut src de l'iframe.

0

Ou mon utilisation préférée

setTimeout('your app', 6000) 

Cela va faire attendre x nombre de millisecondes pour appeler toutes les fonctions ....

+5

Que signifierait exactement «votre application» dans votre exemple? – fresskoma

8

ne sais pas si besoin de faire fonctionner sans javascript. Mais le meilleur est Methode do changer le src directement après l'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> 

Utiliser $ (document) .ready Commencera le rendu de votre Iframe directement après l'arbre DOM est construit, mais avant tout le contenu en votre côté est chargé, donc je pense que ce n'est pas ce que vous voulez.

jquery a l'événement .load, qui est le même que onload (après toutes les ressources sont chargées) Vous pouvez également appliquer l'affichage

$(window).load(function(){ iframe.src = src; } 
+0

Hey Eskimo- Je suppose que votre réponse fonctionnerait, même si je n'ai pas réussi à le faire fonctionner (je suis sûr que c'était dû à un problème de mon côté) :) Je n'ai pas assez de réputation pour vous voter encore, mais merci pour la suggestion! – Sean

1

: aucun à l'iframe avec CSS, utilisez le .show jQuery comme celui-ci :

$(document).ready(function(){ 
    $('iframe.class_goes_here').show(); 
}); 
+6

L'iframe sera toujours chargé même si dans une sous-arborescence 'display: none' dom - il ne s'affichera pas. –

1

Cela fonctionne pour moi, mais il a des problèmes si vous modifiez le code du tout:

function loadIFrame() { 
    window.frames['BodyFrame'].document.location.href = "iframe.html"; 
}   
function delayedLoad() { 
    window.setTimeout(loadIFrame2, 5000); 
} 

Utilisation de:

<iframe src="" onLoad="delayedLoad()"></iframe> 
1

Vous pouvez utiliser l'attribut defer en cas de besoin charger dernière après css, js etc:

iframe defer src="//player.vimeo.com/video/89455262" 
+0

cela ne fonctionne pas –

0

iFrame de charge après page chargée Avec JQuery et un peu html et 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>

Questions connexes