Exécution du code javascript sur la charge de la page, sans utiliser la balise Onload

Comment puis-je exécuter un code JavaScript lorsque la page est chargée sans utiliser la balise onload ?

J'essaie d'exécuter ce script:

 <script type="text/javascript"> function displayLightbox() { document.getElementById('light').style.display='block';document.getElementById('fade').style.display='block' } </script> 

Cela affiche une boîte à lumière.

Comme ça:

 window.onload = function WindowLoad(event) { alert("Page is loaded"); } 

Modifier: si un autre code utilise également window.onload après ce script, il sera "écrasé" – pour s'assurer qu'il est exécuté (et annuler toute autre onload ), placez-le au bas de la page.

Edit 2: À la réflexion, il est préférable d' ajouter de l'auditeur onload au lieu de l'écraser:

 <script type="text/javascript"> if (window.addEventListener) { // Mozilla, Netscape, Firefox window.addEventListener('load', WindowLoad, false); } else if (window.attachEvent) { // IE window.attachEvent('onload', WindowLoad); } function WindowLoad(event) { alert("Another onload script"); } </script> 

Cela empêchera tous les conflits avec le code existant et est plus un navigateur croissant que possible.

Le cas de test en direct est disponible ici: http://jsfiddle.net/yahavbr/GZPTG/ testé pour IE8, Chrome et Firefox (dernières versions) n'hésitez pas à tester plus.

Peut-être mettre un code javascript à la fin de la page juste avant la </body> fermeture.

 . . . <script> yourFunctionHere(); </script> </body> 

Tu peux faire

 <head> <script> document.onload = function() { /*run code here */} </script> </head> 

Un moyen plus propre serait

 <head> <script> document.addEventListener('onload',funciton(){ /* run code here */ }); </script> </head> 

Car cela permet à plusieurs gestionnaires d'événements au même événement

Une meilleure façon est généralement de réagir à domReady cependant.

La plupart des bibliothèques javascript prennent en charge les moyens faciles d'accéder à domReady. Dans jQuery, par exemple, vous pouvez le faire comme ceci:

 $(function() { /* code here will be run as soon as the dom is ready to be interacted with, but before document.load occurs which means you don't have to wait for images to load for example */ }); 

Vous devez utiliser la fonction Onload car vous rencontrerez moins de problèmes lors de la tentative de débogage dans différents navigateurs.

La seule autre façon que je sais de simuler cet effet de façon fiable est d'avoir un bloc d'étiquette de script juste avant le pied de page de la page.