Je viens de debusquer cette curisosité ...
Testez pas vous mêmes !Code:<body onload="alert(this.tagName)" onclick="alert(this.tagName)">
Il ne connait pas son tagName sur le onload ????
Quelqu'un aurait il une explication :? ?
Version imprimable
Je viens de debusquer cette curisosité ...
Testez pas vous mêmes !Code:<body onload="alert(this.tagName)" onclick="alert(this.tagName)">
Il ne connait pas son tagName sur le onload ????
Quelqu'un aurait il une explication :? ?
Salut,
Le onload du body, ça veut dire ce qu'il y a dans le body. Mais lorsqu'il lance ses fonctions, il n'a pas encore fini de se loader lui-même, il n'est pas encore arriver à la fin de tag.
Bon, c'est spécial comme raisonnement mais c'est mon avis. :P
C'est étrange en effet :koi:
Le "this" désigne ici l'élément window* mais je ne comprends pas pourquoi... il devrait pourtant bien désigner le body...
(* je m'en suis rendu compte en remplaçant this.tagName par this)
Bonjour,
Peut-être simplement parceque onload correspond à la fin du chargement de la page... Il s'agit donc d'un attribut placé sur BODY mais qui concerne le document et donc this <> body :roll:
Y.
pourquoi le onclick retourne il un truc correct et pas le onload alors ?
this = window pendant le chargement
et devient body après la fin du onload ????
this est l'élément courant. Donc il est égale à window pendant le chargement.
Lorsque tu cliques sur le body, l'élément courant devient le body.
peut etre que le onload est justement un cas spécifique et qu'il appartient au window, mais pour le déclarer faut le mettre sur le body.
Pour comprendre je fais le test tout con :
Résultat : "Je suis lancé depuis le script"Code:
1
2
3
4
5
6
7
8
9
10 <script type="text/javascript"> window.onload = function() { alert('je suis lancé depuis le script'); } </script> <body onload="alert('je suis lancé depuis body')">..</body>
Onload n'est pas plutôt sur document ?
Code:
1
2
3
4
5
6 <script type="text/javascript"> document.onload = function() { alert('je suis lancé depuis le script'); } </script>
C'est vrai que c'est perturbant, mais c'est logique.
Le événements n'existent pas en HTML, donc les attributs d'événement ne sont pas liés à une balise mais à un objet JavaScript.
Lors du chargement de la page, l'interpréteur JavaScript crée des objets de type HTMLElement à partir des balises rencontrées et en alimente les propriétés et méthodes en fonction des attributs qu'il rencontre.
Comme déjà précisé, onload n'est pas une méthode de l'objet body, onclick si.
Le seul truc, c'est que onload est une propriété de l'objet window, mais il n'existe pas de balise window, l'attribut HTML est donc associé à la balise body parce que ça me semble l'emplacement le plus cohérent, mais il reste attaché à l'objet window.
Code:
1
2 alert(document.body.onload); alert(window.onload);
Hum...
Autre curiosité :
etCode:<body onclick="alert(this.nodeType)">
Code:alert(document.body.nodeType)