2010-04-12 5 views
4

Je veux exécuter un script après que la page entière soit chargée, quand elle est terminée.Comment démarrer un code JS lorsque toute la page a été chargée y compris les images (réel sur complet)

La méthode actuelle est:

window.onload=document.getElementById('loaded').value=1; 

Ce qui est pas bon, car certaines images sont encore en charge, et la page n'a pas terminé le chargement vraiment. Qu'est ce que je fais mal?

Certainement ne fonctionne pas pour moi dans Chrome et Firefox. La chose est que je lance un code après, qui renvoie l'état 204, et cela bloque les charges futures. Mais il semble que cet état 204 est renvoyé bien avant le chargement de la page. J'ai donc besoin d'exécuter mon code après que la page soit vraiment chargée.

EDIT

configuration d'une page, qui ne framebreaking

<iframe id="myframe" height=1 width=1></iframe> 
<script type="text/javascript"> 
window.onload=document.getElementById('myframe').src='http://link to a frame braker page'; 
</script> 

lorsque vous mettez le code ci-dessus à une page, il charge l'iframe avant que la page est complètement chargée. Il suffit de mettre une alerte sur la page iframe, et essayer sur un serveur plus lent où votre page mère contient de grandes images etc ..

Répondre

4

window.onload = document.getElementById ('chargé'). value = 1;

Vous avez oublié de transformer cela en fonction.Ce que vous dites est:

document.getElementById('loaded').value= 1; 
window.onload= 1; 

De toute évidence, ce n'est pas très efficace en tant que détecteur de charge. Qu'est-ce que vous vouliez dire était probablement:

window.onload= function() { 
    document.getElementById('loaded').value= '1'; 
}; 
+0

+1 pour l'explication détaillée, et pour réellement résoudre le problème de l'OP! –

4

L'événement window.onload devrait attendre le chargement des images avant d'être tiré:

L'événement de chargement se déclenche à la fin du processus de chargement de document . À ce point , tous les objets dans le document sont dans le DOM, et toutes les images et les sous-cadres ont terminé chargement.

Source: Mozilla Dev Center: window.onload

Vous pouvez vérifier les éléments suivants Stack Overflow après pour en savoir plus:


MISE À JOUR:

La raison pour laquelle votre implémentation ne fonctionne pas a été identifiée par bobince in another answer. La solution consiste à utiliser:

window.onload = function() { 
    document.getElementById('loaded').value = '1'; 
}; 
+0

Eh bien, ne fonctionne pas pour moi dans Chrome et Firefox. La chose est que je lance un code après que l'état retourne 204, et cela bloque les charges futures. Mais il semble que cet état 204 est renvoyé bien avant le chargement de la page. J'ai donc besoin d'exécuter mon code après que la page soit vraiment chargée. – Pentium10

+0

@ Pentium10: C'est intéressant. Pensez-vous que vous pouvez poster un exemple de code très court qui reproduit ce problème? –

-1

Si vous pouvez utiliser Jquery, allez voir FrameReady plugin.
Vérifiez this SO question. pour plus d'informations

+0

J'étais sûr que OP parlait d'Iframe; foiré avec une autre question probablement :). – systempuntoout

Questions connexes