221 votes

de la fenêtre.onload vs <body onload="" />

Quelle est exactement la différence entre la fenêtre.événement onload et à l'événement onload de la balise body? quand dois-je utiliser et comment faut-il le faire correctement?

213voto

Richard Turner Points 3035

window.onload = myOnloadFunc et <body onload="myOnloadFunc();"> sont des façons différentes d'utiliser le même événement. À l'aide de window.onload est moins gênant si - il faut du JavaScript de votre de le HTML.

L'ensemble de la commune de bibliothèques JavaScript, Prototype, ExtJS, Dojo, JQuery, YUI, etc. sympa wrappers autour des événements qui se produisent pendant que le document est chargé. Vous pouvez écouter de la fenêtre d'événement onLoad, et de réagir à cela, mais onLoad n'est pas tiré jusqu'à ce que toutes les ressources ont été téléchargés, de sorte que votre gestionnaire d'événement ne sera pas exécutée jusqu'à ce que la dernière image énorme a été récupérée. Dans certains cas, c'est exactement ce que vous voulez, dans d'autres, vous trouverez peut-être que l'écoute lorsque le DOM est prêt est plus appropriée dans ce cas est similaire à onLoad mais un incendie, sans attente pour les images, etc. pour télécharger.

31voto

jcampbell1 Points 1888

Il n'y a pas de différence, mais vous ne devriez pas utiliser.

Dans la plupart des navigateurs, de la fenêtre.événement onload n'est pas déclenchée jusqu'à ce que toutes les images ont chargé, ce qui n'est pas ce que vous voulez. Les normes en fonction des navigateurs disposent d'un événement appelé "DomContentReady" qui se déclenche plus tôt, mais il n'est pas pris en charge par IE. Je vous recommande d'utiliser une bibliothèque javascript qui prend en charge un navigateur croix DomContentReady fonctionnalité, ou de trouver un bien écrit, d'une fonction que vous pouvez utiliser. jQuery $(document).ready(), est un bon exemple.

20voto

john Joseph Points 121

window.onload peut fonctionner sans corps. Créer une page avec uniquement les balises de script et de l'ouvrir dans un navigateur. La page ne contient pas de corps, mais il fonctionne encore..

<script>
  function testSp()
  {
    alert("hit");
  }
  window.onload=testSp;
</script>

10voto

Mark Biek Points 41769

Je préfère, en général, à ne pas utiliser l' <body onload=""> événement. Je pense que c'est plus propre à conserver le comportement séparé du contenu autant que possible.

Cela dit, il y a des occasions (généralement assez rare pour moi) où à l'aide de body onload peut donner un léger boost de vitesse.

J'aime utiliser le Prototype, donc en général j'ai mis quelque chose comme cela dans l' <head> de ma page:

document.observe("dom:loaded", function(){
  alert('The DOM is loaded!');
});

ou

Event.observe(window, 'load', function(){
  alert('Window onload');
});

Le ci-dessus sont des trucs que j'ai appris ici. Je suis très attaché à la notion de joindre les gestionnaires d'événements à l'extérieur de l'HTML.

(Edit pour corriger une faute d'orthographe dans le code).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by: