|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||||
![]() ![]() ![]() Didier MouronvalDéveloppeur Web Inscription : juin 2008 Messages : 18 160 ![]() |
La spécification HTML5 définit différents modules indépendants. Cette modularité a pour avantage de permettre de travailler sur certains aspects du standard sans avoir besoin de se soucier de l'état d'avancement des autres.
Parmi ces modules, l'API DOM est celui qui permet de définir les propriétés et méthodes disponibles en JavaScript pour manipuler le DOM. Nous allons voir les différentes nouveautés particulièrement utiles de cette API. Standardisation de innerHTML Introduite par Internet Explorer 4 (de mémoire...), la propriété innerHTML permet de définir le contenu d'un élément en lui affectant sous forme de chaine une portion de code HTML. Code :
HTMLElement.innerHTML = '<p>chaine HTML</p>'; Bien que propriétaire IE, cette propriété (sic) s'est largement répandue sur les autres navigateurs et est depuis longtemps largement compatible. Elle est désormais standardisée (innerHTML) et fait pleinement partie de la spécification HTML5. getElementsByClassName() Nous connaissions déjà les classiques getElementById(), getElementsByName() et getElementsByTagName(), mais beaucoup de développeurs ont longtemps regretté l'absence de possibilité de recherche d'éléments à partir d'un nom de classe (ce qui amenait souvent à utiliser une bibliothèque JavaScript pour pallier ce manque). C'est désormais rectifié avec l'apparition de la méthode getElementsByClassName(). Cette méthode peut être appliquée à l'objet document ou à un objet HTMLElement. Comme le 's' de 'elements' le laisse supposer, elle retourne une collection d'éléments (il est donc nécessaire de faire une boucle sur la collection pour traiter individuellement chaque élément). Il est possible de spécifier plusieurs noms de classe pour un élément séparés par des espaces, la méthode prend bien entendu en compte cette subtilité. Code :
querySelector() / querySelectorAll() Ces deux nouvelles méthodes font leur apparition avec un fonctionnement un peu différent des précédentes. Les méthodes du type getElement[s]By... prennent comme argument une chaine correspondant au type d'élément recherché (un id, un nom de balise, de classe ou un name). Les méthodes querySelector() et querySelectorAll() prennent quant à elles en argument une chaine qui correspond à un sélecteur CSS. Normalement, toute chaine pouvant servir de sélecteur en CSS est acceptée, y compris les plus complexes. Nous ne listerons pas ici les différents sélecteurs possibles, je vous laisse faire vos propres tests. Ces méthodes s'appliquent soit à l'objet document, soit à un objet HTMLElement. querySelector() renvoie un élément HTML qui correspond au premier élément trouvé dans le DOM correspondant au sélecteur, son résultat peut donc être exploité directement. querySelectorAll() renvoie une collection d'éléments HTML correspondant à tous les éléments correspondant au sélecteur. Pour traiter son résultat, il faudra donc faire une boucle sur chacun de ses membres. Code :
matchesSelector() Cette méthode permet de vérifier si un élément correspond à un sélecteur CSS. Tout comme les précédentes, elle prend en argument une chaine correspondant à un sélecteur. Elle renvoie un booléen. Code :
L'interface classList Jusqu'à présent, pour manipuler les classes CSS d'un élément, il était nécessaire d'utiliser des méthodes assez complexes, que ce soit pour vérifier la présence d'un nom de classe, pour en ajouter ou en retirer. Il fallait utiliser le plus souvent des expressions régulières et se méfier des erreurs possibles (typiquement, qu'une recherche sur "classe" ne renvoie pas vrai si l'élément possède la classe "classeN"). L'interface classList permet de simplifier tout cela. Elle s'applique à un élément HTML et renvoie une collection de ses noms de classe. Code :
var allClasses = HTMLElement.classList;
Conclusion Ces différentes propriétés et méthodes apportent beaucoup aux développeurs pour ce qui est de la manipulation du DOM. Cependant, il me semble que de nombreuses méthodes utiles ont été oubliées, que ce soit en rapport à l'insertion d'éléments dans le DOM, à la possibilité de faire des recherches en remontant l'arborescence (retrouver facilement un élément à partir d'un de ses descendants). Espérons que les futures implémentations combleront ces manques en s'inspirant, par exemple, des différentes bibliothèques JavaScript. Voir le billet blog : HTML5 : quelques nouveautés de l'API DOM pour JavaScript
__________________
Pas de question technique par MP ! Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi ! Vous possédez un blog et aimeriez diffuser vos billets sur le forum, contactez-moi ! Mes formations video2brain : La formation complète sur JavaScript • JavaScript et le DOM par la pratique • PHP 5 et MySQL : les fondamentaux Mon livre sur jQuery
|
||||||
|
40
|
Copyright © 2000-2013 - www.developpez.com