J'ai un formulaire qui contient un attribut action, comme tout formulaire qui se respecte et un nœud enfant de nom 'action' : un input.
Comme le spécifie le DOM, on accède à un attribut via la méthode parent.getAttribute(name) et à un nœud enfant via parent.getElementsByTagName(name)[indice]. Un raccourci existe : parent.name. Il correspond soit à l'enfant de name 'name' ou à son attribut 'name' si pas d'enfant : ce sont les nœuds enfant qui ont la priorité. Ainsi, dans mon cas, form.action me retourneras logiquement l'input de name 'action'. Tandis que form.getAttribute('action') me retournera en toute logique son attribut nommé 'action'.
Chez Microsoft, comme d'habitude, la logique vient au second plan. Ainsi, sous IE 7 :
>>> document.forms[1].action <input contentEditable="inherit" start="fileopen" type="hidden" height="149286376" maxLength="2147483647" loop="1" size="20" value="documents:setAlbum" name="action" >>>> document.forms[1].getAttribute('action') <input contentEditable="inherit" start="fileopen" type="hidden" height="119117208" maxLength="2147483647" loop="1" size="20" value="documents:setAlbum" name="action"> >>> document.forms[1].attributes.action.value "/url_du_formulaire.php"
Monsieur a décidé que le nœud enfant serait finalement un attribut et m'oblige à passer par des chemins farfelus pour aller chercher cette action tant convoitée…
Merci encore Microsoft.
Commentaires