Lien d'évitement avec ASP.net 2.0
Les liens d'évitement vous connaissez ? non ?
Jean-Pierre Villain d'alsacreations vient justement d'écrire un tutorial très complet sur le sujet :
Tutorial : Accessibilité du web > Les liens d'évitement
En quelques mots, les liens d'évitements sont des liens internes au document qui permettent de passer un regroupement de lien comme un menu. Il s'agit d'ailleurs de la règle WCAG 13.6 (Web Content Accessibility Guidelines)
13.6 Group related links, identify the group (for user agents), and, until user agents do so, provide a way to bypass the group.
Saviez-vous qu'ASP.net 2.0 propose cette fonctionnalité en natif pour ces contrôles de navigation ? A savoir le contôle Menu, TreeView et SiteMapPath ? En effet ces 3 contrôles possèdent une propriété SkipLinkText :
Le contrôle Menu fournit la propriété SkipLinkText afin de permettre aux lecteurs d'écran d'ignorer l'intégralité du contrôle. Si la propriété SkipLinkText est définie, une image invisible s'affiche avec un texte de remplacement afin de permettre à l'utilisateur d'accéder à la fin du contrôle. Les lecteurs d'écran lisent le texte de remplacement à haute voix ; l'image occupe uniquement un pixel. Pour un contrôle au pixel près du rendu de la page, affectez une chaîne vide ("") à la propriété SkipLinkText et fournissez votre propre mécanisme pour ignorer le menu. La propriété SkipLinkText a pour valeur par défaut la chaîne vide.
Source : MSDN propriété SkipLinkText
Par défaut cette propriété vaut "Skip Navigation Links" (cela dépend de la langue de l'utilisateur et des langues installées sur le serveur) et le code HTML généré par un menu est :
<a href="#ctl00_Menu1_SkipLink">
<img alt="Skip Navigation Links" src="/www/WebResource.axd?d=ELZbKpY5BIijW4JYKwnSGQ2&t=632969108944906146"
width="0" height="0" style="border-width:0px;" /></a>
<!--
ici le menu
-->
<a id="ctl00_Menu1_SkipLink"></a>
Ce qui est parfaitement compatible avec ce qui est raconté dans l'article cité plus haut :-)
N'oubliez pas que pour générer un vrai menu avec une sémantique correcte (une liste plutôt que des tableaux) il vous faut utiliser les CSS Friendly Control Adapters qui sont par ailleurs sortis en release le 20 novembre : ASP.NET 2.0 CSS Friendly Control Adapters 1.0