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 ?
Réponses
Trop de publicités?<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.
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é.
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.
2 votes
Vous devez utiliser " pour entourer la valeur de l'attribut