246 votes

window.onload vs <body onload=""/>

Quelle est la différence exacte entre le window.onload et l'événement onload de l'événement body tag ? quand dois-je utiliser lequel et comment le faire correctement ?

2 votes

Vous devez utiliser " pour entourer la valeur de l'attribut

5voto

Yesu Raj Points 79

window.onload - Appelé après le chargement complet de tous les fichiers DOM, JS, images, iframes, extensions et autres. Ceci est égal à $(window).load(function() {}) ;

<body onload=""> - Appelé une fois le DOM chargé. Ceci est égal à $(document).ready(function() {}) ;

2voto

roenving Points 1194

Il y a pas de différence ...

En principe, vous pouvez donc utiliser les deux (un à la fois !-).

Mais pour des raisons de lisibilité et de propreté du code html, je préfère toujours la méthode window.onload !o].

2voto

Shadow2531 Points 6726

<body onload=""> doit prévaloir sur window.onload .

Avec <body onload=""> , document.body.onload peut être nulle, indéfinie ou une fonction selon le navigateur (bien que l'option getAttribute("onload") devrait être assez cohérent pour obtenir le corps de la fonction anonyme sous forme de chaîne). Avec window.onload lorsque vous lui attribuez une fonction, window.onload sera une fonction cohérente dans tous les navigateurs. Si cela vous importe, utilisez window.onload .

window.onload est de toute façon préférable pour séparer le JS de votre contenu. Il n'y a pas beaucoup de raisons d'utiliser <body onload=""> ; de toute façon, quand vous pouvez utiliser window.onload .

Dans Opera, la cible de l'événement pour window.onload y <body onload=""> (et même window.addEventListener("load", func, false)) sera la fenêtre au lieu du document comme dans Safari et Firefox. Mais, 'this' sera la fenêtre dans tous les navigateurs.

Cela signifie que, lorsque c'est important, vous devez emballer la crudité et rendre les choses cohérentes ou utiliser une bibliothèque qui le fait pour vous.

1voto

Dr. Bob Points 263

Si vous essayez d'écrire du code JS discret (et vous devriez le faire), alors vous ne devriez pas utiliser <body onload=""> .

Je crois savoir que les différents navigateurs traitent ces deux éléments de manière légèrement différente, mais qu'ils fonctionnent de manière similaire. Dans la plupart des navigateurs, si vous définissez les deux, l'un sera ignoré.

1voto

Soldarnal Points 2646

Pensez à l'onload comme à tout autre attribut. Sur un champ de saisie, par exemple, vous pourriez mettre :

<input id="test1" value="something"/>

Ou vous pouvez appeler :

document.getElementById('test1').value = "somethingelse";

L'attribut onload fonctionne de la même manière, sauf qu'il prend une fonction comme valeur au lieu d'une chaîne de caractères comme le fait l'attribut value. Cela explique également pourquoi vous ne pouvez "utiliser qu'un seul d'entre eux" - l'appel à window.onload réaffecte la valeur de l'attribut onload pour la balise body.

De plus, comme d'autres le disent ici, il est généralement plus propre de séparer le style et le javascript du contenu de la page. C'est pourquoi la plupart des gens conseillent d'utiliser window.onload ou la fonction ready de jQuery.

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:

X