J'ai lu la page du W3C à ce sujet, mais elle reste encore vague pour moi. L'objectif de l'attribut role
est-il de clarifier le code? Ou sera-t-il interprété par certains navigateurs ou araignées?
Peut-il être utilisé en tant que sélecteur DOM en utilisant certaines bibliothèques JavaScript (je pense que puisque l'attribut id
doit être unique, il pourrait être utilisé pour identifier plusieurs ressources sur une page)?
La version courte:
L'attribut de rôle peut donner aux futurs navigateurs un moyen de travailler intelligemment avec certains éléments XML de manière indépendante du périphérique. Par exemple, une liste non ordonnée portant l'attribut de rôle "navigation" peut être interprétée intelligemment sur les navigateurs dans les environnements de bureau et de poche, ce qui permet de l'afficher clairement dans les deux environnements.
La version longue:
L'attribut de rôle XHTML défini dans cette spécification permet à l'auteur d'annoter les langages XML avec des informations sémantiques pouvant être extraites par une machine concernant la fonction d'un élément. Les cas d'utilisation incluent l'accessibilité, l'adaptation de périphérique, le traitement côté serveur et la description complexe de données.
L'attribut décrit le (s) rôle (s) que l'élément actuel joue dans le contexte du document. Cela peut être utilisé, par exemple, par les applications et les technologies d'assistance pour déterminer le but d'un élément. Cela pourrait permettre à un utilisateur de décider en connaissance de cause des actions pouvant être prises sur un élément et d'activer l'action sélectionnée de manière indépendante du périphérique. Il pourrait également être utilisé comme mécanisme pour annoter des parties d'un document selon un méthode propre à un domaine (par exemple, une taxonomie de terme juridique).
Exemple:
<ul role="navigation sitemap">
<li href="downloads">Downloads</li>
<li href="docs">Documentation</li>
<li href="news">News</li>
</ul>
Étant donné que le groupe de travail XHTML2 cessera d'exister à la fin de cette année, il n'y a aucune chance que cette spécification atteigne le statut de publication avec quoi que ce soit qui ressemble à sa forme actuelle. http://www.w3.org/News/2009#entry-6601
Le document auquel vous faites référence fait partie des travaux du groupe de travail XHTML 2, qui n'existe plus depuis. Il est effectivement obsolète.
HTML5/XHTML5 a également un attribut role
. Sa définition est similaire mais un peu plus limitée - son objectif est d'indiquer les rôles (ARIA) accessibles, afin que les technologies d'assistance telles que les lecteurs d'écran permettent aux utilisateurs de mieux informer sur l'objectif des composants de l'interface utilisateur (widgets), la page Web plus facilement.
La liste des rôles valides pour ARIA est disponible à http://www.w3.org/TR/wai-aria/#roles
rôle peut être utilisé pour l'accessibilité. Je crois comprendre que l’attribut role doit être évité là où la sémantique le précise. L'utilisation de <nav role="navigation">...</nav>
par exemple est déconseillée car l'élément sémantique nav
implique déjà la navigation.
Mais il y a des cas où cela est utile. Une image qui est un lien, par exemple, peut avoir role="link" tabindex="0"
pour aider les lecteurs d'écran et les autres technologies d'assistance à comprendre qu'elle agit comme un lien (veillez à écouter l'autre événement pour la saisie de clé et l'événement de clic).
Ou sur une image, vous pouvez avoir role="button"
pour indiquer que l'image agit comme un bouton.
L'attribut de rôle permet à l'application Web d'ajouter à l'application Web une sémantique qui a un sens pour les navigateurs, mais ne peut pas être transmise dans le balisage sans l'indiquer.
Souvent, il y a une manière sémantiquement correcte de le faire sans recourir à l'attribut, mais c'est là quand vous en avez besoin.