11540 sujets

JavaScript, DOM et API Web HTML5

Bonjour à tous,

Comme indiqué dans le titre, je voudrais savoir quel est l'intérêt d'utiliser les fonctions getAttribute et setAttribute sur les noeuds du DOM, sachant que leur support est à ma connaissance assez bancal dans IE.

Dès lors que l'on utilise des propriétés présentes dans les spécifications du DOM, pourquoi alors prendre le risque d'utiliser ces deux fonctions, ce qui donnera en plus un code plus lourd ?

Merci d'avance !
Modifié par Eldebaran (02 Dec 2006 - 13:07)
Les deux précédents posters étant plus expérimentés que moi, je ne souhaite pas ici contredire.
Juste donner mon opinion.

Si on considère que l'on écrit en html COLSPAN ou colspan par exemple.
J'avoue par flemmardise apprécier setAttribute car je peux écrire le même colspan sans avoir à me creuser la tête ou à fouiller partout pour savoir que la propriété en question s'appelle colSpan.

Alors c'est vrai que je suis toujours assez déçu quand je constate que ce @[#@@ d'IE ne comprend pas le setAttribute("colspan"...) et bien d'autres du genre.

...Toujours adepte du provide tools not policy
Merci à tous les deux !

C'est vrai que QuirksMode est une vraie mine d'or, je vais me plonger là-dedans (c'est bizarre, je ne m'attendais pas à ce que tu fasses partie des gens qui me répondent, koala64 Smiley cligne ).
Modérateur
A charge de revanche.... Smiley ravi

aCOSwt a écrit :
J'avoue par flemmardise apprécier setAttribute

J'ai commencé JS par DOM... donc, oui, je te comprends. Smiley cligne

Quoiqu'il en soit, ce qui compte, c'est le support et l'avantage est aux propriétés définies dans JS. Ca ne veut pas dire qu'elles sont toutes supportées pour autant et que, dans tous les cas, il faut s'adapter en fonction des réactions d'Opera... pardon d'IE... enfin, je veux dire, des navigateurs... Smiley lol
matmat a écrit :
Pourquoi sur certain script on voit:

element.getAttribute("alt")

et sur d'autre:

element.alt
Euh... Parce que les deux solutions fonctionnent ? Smiley langue
salut..

ben parce que alt est aussi bien un "attribut " qu'une propriété
(cf dom2 - html
Définit dès le dom niveau 1 :
a écrit :

String alt : texte alternatif affiché par les navigateurs qui ne peuvent rendre cet élément d'entrée. Particulièrement utile lorsque type est image.
mirroir de l'attribut 'alt'



..enfin je l'ai jamais vu utilisé sous la forme de propriété qui serait la bonne méthode .

Ps : nombreux développeurs ( notamment ceux travaillant avec le SVG ) indiquent qu'il est meme préférable d'utiliser "get et setAttributeNS( )" spécifiant les espace de nommage ( avec null si espace par défaut -non-péfixé )
..
c'est pareil avec evt.getTarget() et evt.target ..
++
Modifié par kzone (02 Dec 2006 - 10:13)
Hello,
kzone a écrit :
..enfin je l'ai jamais vu utilisé sous la forme de propriété qui serait la bonne méthode .
Je ne vois pas pourquoi ce serait la bonne méthode, étant donné que cette propriété est dans les spécifications et qu'elle est mieux supportée par les navigateurs.
kzone a écrit :
Ps : nombreux développeurs ( notamment ceux travaillant avec le SVG ) indiquent qu'il est meme préférable d'utiliser "get et setAttributeNS( )" spécifiant les espace de nommage ( avec null si espace par défaut -non-péfixé )
Euh... une fois de plus, je ne suis pas d'accord. Il faut utiliser ces méthodes seulement si ton document est servi en tant que XML (donc pour le SVG, oui, évidemment), et surtout pas s'il est servi en tant que "soupe de balises". Et puis même pour un document servi en tant que "application/xhtml+xml", le DOM HTML reste valide.
kzone a écrit :
c'est pareil avec evt.getTarget() et evt.target ..
Même remarque, target est dans les spécifications.

Bonne journée. Smiley smile
...

il vaut mieux effectivement utiliser le DOM Core niveau 1 ( Html) dès que possible pour éviter toute incompatibilité ( meme pour le SVG qui s'appuie sur ce dernier ) ..


a écrit :

Eldebaran a écrit :
Et puis même pour un document servi en tant que "application/xhtml+xml", le DOM HTML reste valide.



pour cela tout à fait d'accord !.

a écrit :

Il faut utiliser ces méthodes seulement si ton document est servi en tant que XML

Les spécification des espaces de nom a été rédigé après le DOM level1 et n'a pu etre ajouté qu'avec les specs Dom Core level2...

a écrit :

..enfin je l'ai jamais vu utilisé sous la forme de propriété qui serait la bonne méthode


il est préférable d'utiliser les propriétés plutot que les "getter et setter " si ces propriétés existent :
a écrit :

Attributes

A bloody mess. Try influencing attributes in this order:

1. Try getting or setting a specific property, like x.id or y.onclick.
2. If there is no specific property, use getAttribute() or setAttribute().
3. If even that doesn't work, try any other method or property in the table below. Most have horrible browser incompatibility patterns, though.
4. Avoid attributes[]. It's worse than anything else.


Mais meme si c'est samedi , je pensais sans soute à un monde où tous les navigateurs se prendraient la main pour implémenter avec joie et bonheur les dernières alégories du W3c .... Smiley murf
... quoi ! j'ai fauté là !? Smiley scotch
Modifié par kzone (02 Dec 2006 - 11:54)
kzone a écrit :
Mais meme si c'est samedi , je pensais sans soute à un monde où tous les navigateurs se prendraient la main pour implémenter avec joie et bonheur les dernières alégories du W3c .... Smiley murf
... quoi ! j'ai fauté là !? Smiley scotch
Smiley lol

Attention, tu as franchi les limites ! Des modérateurs habillés en blancs vont venir te chercher et te mettre la chemise rigolote qui attache les mains. Smiley cligne

En tout cas, merci à tous, je considère ce sujet comme largement résolu.