Prise en charge de l'accessibilité dans ASP.NET
Mise à jour : novembre 2007
ASP.NET peut vous aider à créer des applications Web qui sont accessibles aux personnes handicapées. Les applications Web accessibles permettent aux gens d'utiliser les technologies d'assistance, telles que les lecteurs d'écran, pour utiliser des pages Web. Les applications Web accessibles présentent les avantages suivants :
Elles peuvent être utilisées par l'audience la plus large possible.
Elles impliquent des principes de conception qui avantagent tous les utilisateurs et pas seulement les personnes handicapées.
Elles répondent aux besoins de nombreuses institutions qui nécessitent que toutes les applications Web soient accessibles.
En découvrant les règles d'accessibilité et comment ASP.NET peut vous aider à respecter ces règles, vous pouvez créer des applications qui sont plus simples d'interaction pour les personnes handicapées.
Instructions relatives à l'accessibilité
Différentes organisations publient des règles relatives à la création d'applications accessibles. Les règles suivantes sont connues :
Web Content Accessibility Guidelines 1.0 (WCAG).
Ces normes sont développées par le W3C (World Wide Web Consortium) et sont la base de nombreuses autres normes d'accessibilité. Cela inclut des normes d'accessibilité qui sont utilisées par les gouvernements du monde entier.
Pour obtenir les WCAG, consultez le site Web du W3C (World Wide Web Consortium).
Les critères WCAG définissent différents niveaux de priorités, à l'aide d'une échelle de 1 à 3 pour les points de contrôle qui sont associés à chaque règle. Certaines institutions nécessitent que tous les sites Web se conforment aux points de contrôle de priorité 1 et de priorité 2.
Section 508.
Le gouvernement des États-Unis définit des normes d'accessibilité dans la section 508 du Rehabilitation Act, qui sont semblables aux WCAG.
Pour obtenir les règles de la section 508, visitezhttp://www.section508.gov.
Règles d'accessibilité Microsoft.
Pour obtenir les règles d'accessibilité Microsoft, visitez Microsoft Accessibility et MSDN Library et recherchez « Accessibility Design Guidelines for the Web ».
Test de l'accessibilité
Dans une certaine mesure, vous pouvez tester la conformité des pages Web aux normes d'accessibilité à l'aide de divers outils qui sont disponibles de tiers.
Si vous disposez d'un environnement de développement, tel que Microsoft Visual Studio 2005, l'environnement offre peut-être des outils de test de l'accessibilité. Pour plus d'informations, recherchez dans la documentation du produit. Toutefois, les outils de validation de l'accessibilité au moment du design ne testent pas la sortie qui est générée dynamiquement, telle que le balisage qui est restitué par les contrôles serveur ASP.NET ou par votre propre code. En plus d'utiliser les outils de validation de l'accessibilité au moment du design, il est recommandé de tester la sortie de vos pages.
Un test d'accessibilité automatisé ne peut pas exécuter un diagnostic complet de l'accessibilité d'une page ou d'un site Web. Beaucoup des règles d'accessibilité requièrent que vous jugiez si les caractéristiques d'une page se conforment à la règle. Par exemple, un test automatisé peut déterminer si vous avez fourni le texte alt pour toutes les images sur votre page. Toutefois, le test automatisé ne peut pas déterminer si le texte alt décrit l'image. De la même façon, un test automatisé ne peut pas déterminer objectivement si les couleurs que vous utilisez sur votre page présentent un contraste suffisant pour les lecteurs qui ont besoin que le texte soit très contrasté. Par conséquent, vous devez connaître les règles en détails pour créer des applications vraiment accessibles, afin que vous puissiez créer vos pages et respecter les règles d'accessibilité. Voici un autre exemple d'un contrôle d'accessibilité qui ne peut pas être exécuté par un outil : le texte alt doit exister pour une image uniquement graphique, telle qu'une bordure de tableau arrondie. Sinon, un lecteur d'écran lira le fichier image. Si le texte alt est vide, le lecteur d'écran ignorera l'image correctement.
Fonctionnalités de l'accessibilité dans ASP.NET
La plupart du temps, les contrôles ASP.NET restituent le balisage qui se traduit par la conformité des pages aux normes d'accessibilité ou présentent des propriétés que vous pouvez définir afin de rendre les pages accessibles. Toutefois, les contrôles ASP.NET restituent quelquefois une sortie qui ne se conforme pas à toutes les normes d'accessibilité. Pour plus d'informations, consultez Contrôles et accessibilité ASP.NET.
Fonctionnalités de contrôle générales qui prennent en charge l'accessibilité
En général, les contrôles ASP.NET répondent aux besoins d'accessibilité de plusieurs façons :
Fournissez un moyen de spécifier un texte équivalent pour tout élément de non-texte.
N'ayez pas de dépendances de couleur.
Restituez des légendes et des en-têtes de colonnes de tableau avec les tableaux.
Restituez des éléments fieldset et legend qui ont des éléments div.
N'imposez pas l'utilisation de feuilles de style.
Prenez en charge le positionnement à l'aide de propriétés de style.
Associez les étiquettes à des contrôles.
Générez un script client qui est indépendant du périphérique ; par exemple, un script qui ne répond pas uniquement aux clics de souris.
Accès par le clavier
Une fonctionnalité d'accessibilité importante est que les fonctionnalités de la page doivent pouvoir basculer d'une forme de saisie à une autre. En pratique, cela signifie que toute tâche qui peut être effectuée avec la souris peut également être effectuée au clavier.
ASP.NET vous permet d'inclure la prise en charge du clavier pour vos pages à l'aide des méthodes ci-dessous :
Vous pouvez définir l'ordre de tabulation pour les contrôles qui utilisent la propriété TabIndex.
Vous pouvez spécifier un bouton par défaut pour un formulaire ou un contrôle Panel en définissant la propriété DefaultButton.
Vous pouvez définir le focus sur les contrôles d'entrée en utilisant des méthodes telles que la méthode SetFocus ou en définissant la propriété DefaultFocus pour un formulaire.
Vous pouvez définir des touches d'accès rapide pour les contrôles bouton en définissant la propriété AccessKey.
Vous pouvez utiliser des contrôles Label avec les zones de texte, qui vous permettent de définir des touches d'accès rapide pour les zones de texte. Pour plus d'informations, consultez Comment : utiliser des contrôles serveur Web Label en tant que légendes.
Images et texte de remplacement
Les règles d'accessibilité conseillent de fournir un texte de remplacement explicite pour les images de la page qui ont un but fonctionnel, telles que celles qui agissent comme des boutons ou des images qui sont restituées par les contrôles de données. Cela permet aux lecteurs d'écran de signaler ce à quoi chaque image de la page est destinée. Si une image n'a aucun but fonctionnel autre que la décoration, le texte de remplacement doit avoir pour valeur une chaîne vide afin que les lecteurs d'écran ignorent l'image.
Par défaut, étant donné que les contrôles Image, ImageButton et ImageMap ne peuvent pas générer automatiquement du texte explicite, ces contrôles ne restituent aucun texte de remplacement. À la place, vous devez fournir le texte vous-même. Les vérificateurs d'accessibilité signalent des contrôles d'image sans texte de remplacement en tant que non-respect des règles.
Pour les contrôles d'image, vous devez effectuer l'une des actions suivantes pour le contrôle :
Affectez du texte explicite à la propriété AlternateText.
Affectez true à la propriété GenerateEmptyAlternateText afin qu'un contrôle Image ASP.NET restitue une chaîne vide comme texte de remplacement. Le texte de remplacement vide est interprété par les vérificateurs d'accessibilité comme signifiant que vous avez marqué délibérément l'image comme n'ayant pas d'importance.
Contrôles avec des images ou des liens inhérents
Certains contrôles, tels que le contrôle TreeView, le contrôle Menu et les WebParts, restituent les images ou les liens dans le cadre de leur balisage. Dans ces cas, le contrôle crée le texte de remplacement pour chaque image ou lien qui décrit sa fonction.
Par exemple, le contrôle TreeView restitue des images pour les boutons de développement et de réduction pour chaque nœud. Le contrôle TreeView génère le texte de remplacement pour ces images selon le texte du nœud. Par défaut, le texte de remplacement de l'image pour développer un nœud comprenant le texte Start est restitué par Expand Start. Vous pouvez spécifier votre propre texte de remplacement en définissant les propriétés ExpandImageToolTip et CollapseImageToolTip du contrôle TreeView.
De la même façon, la commande Menu restitue le texte de remplacement pour les liens qu'elle génère pour développer et réduire les éléments de menu. Les boutons dans une barre de titre de contrôle WebPart restituent de la même façon le texte de remplacement qui décrit la fonction de chaque bouton.
Liens répétitifs ignorés
Les périphériques de technologie d'assistance, tels que les lecteurs d'écran, doivent énumérer chaque lien qui se trouve sur une page dans l'ordre d'affichage des pages. Quelquefois, le lecteur d'écran sera forcé de lire toutes les entrées de chaque page avant d'arriver au contenu principal de la page, tel qu'un menu dans une page maître qui s'affiche en haut de chaque page dans le site Web. Dans ce cas, les règles d'accessibilité conseillent de fournir un moyen aux utilisateurs d'ignorer des listes de liens répétitifs. Les contrôles suivants implémentent une façon d'ignorer les liens répétitifs :
Chacun de ces contrôles prend en charge une propriété SkipLinkText. Si cette propriété consiste à affecter une chaîne (laquelle peut inclure du texte), le contrôle restitue une ancre avant les liens qui inclut une image .gif invisible avec le texte de remplacement. Par défaut, le texte de remplacement est Ignorer les liens de navigation, mais vous pouvez configurer le texte. L'ancre crée un lien à une autre ancre qui suit le contrôle. Cela permet aux lecteurs d'écran et à la technologie de même type de donner aux utilisateurs la possibilité d'ignorer les liens qui sont générés par le contrôle, sans interférer visuellement avec l'affichage de la page. Si la propriété SkipLinkText a pour valeur une chaîne vide, le contrôle ne restitue pas les balises d'ancrage.
Contrôles qui restituent des tableaux
Les règles d'accessibilité recommandent que les tableaux HTML incluent notamment :
Légende pour aider les technologies d'assistance à identifier l'objet du tableau.
Façon d'identifier les en-têtes de colonnes.
Si vous utilisez le contrôle Table pour créer un tableau, vous pouvez définir sa propriété Caption explicitement. Vous pouvez créer des en-têtes de tableau à l'aide de la classe TableHeaderRow, en affectant l'énumération TableHeader de la classe TableRowSection à la propriété TableSection . En conséquence, le tableau restitue un élément thead. Lorsque vous créez des cellules avec le contrôle TableCell, vous pouvez affecter l'ID d'une cellule d'en-tête de tableau à chaque propriété AssociatedHeaderCellID de la cellule. En conséquence, la cellule restitue un attribut header qui associe la cellule à l'en-tête de colonne correspondant.
Les contrôles serveur ASP.NET suivants peuvent restituer des tableaux HTML :
Ces contrôles vous permettent d'affecter la création des légendes recommandées pour le tableau résultant aux propriétés Caption et CaptionAlign.
Pour ces contrôles, si vous définissez la propriété UseAccessibleHeader, le contrôle restitue des éléments th qui ont des attributs scope pour identifier les en-têtes de colonnes.
Deux autres contrôles, les contrôles DataList et Repeater, ne restituent pas automatiquement les éléments thead ou th. Toutefois, vous pouvez définir des modèles d'en-tête pour ces contrôles. Pour le contrôle DataList, les modèles d'en-tête restituent des éléments th. Le contrôle Repeater ne restitue aucun balisage automatiquement ; vous définissez les modèles d'en-tête, de corps et de pied de page pour le contrôle dans lequel vous pouvez spécifier un balisage. Si vous spécifiez que le contrôle Repeater doit restituer un tableau HTML, vous devez inclure le balisage approprié pour respecter les normes d'accessibilité.
Contrôle qui restitue des éléments div
Les règles d'accessibilité recommandent de diviser les formulaires longs en sections pour simplifier la navigation. Le HTML 4.0 a présenté les éléments fieldset et legend pour permettre aux développeurs de pages Web de diviser un formulaire en sections.
Dans ASP.NET, vous pouvez utiliser le contrôle Panel pour créer des sous-divisions dans un formulaire. Si vous affectez une chaîne à la propriété GroupingText pour le contrôle, le contrôle Panel restitue un élément div qui contient un élément fieldset pour le contenu et un élément legend qui a la chaîne que vous avez utilisée dans la propriété GroupingText.
Certains contrôles WebPart restituent également des éléments div. Ces contrôles restituent automatiquement fieldset et des éléments legend.
Contrôles de validation
Beaucoup de pages Web affichent un astérisque (*) à côté d'une zone de texte lorsqu'une entrée est requise ou si l'utilisateur a fait une erreur dans l'entrée de données. Étant donné qu'un astérisque n'est pas explicite, vous devez toujours spécifier des messages d'erreur explicites dans les propriétés Text et ErrorMessage de contrôles de validateur.
En outre, les contrôles de validateur doivent désactiver le script client (EnableClientScript=false).
Contrôles de connexion
Les contrôles de connexion, tels que les contrôles Login, ChangePassword, PasswordRecovery et CreateUserWizard, incluent d'autres contrôles, tels que les contrôles Label, TextBox et les contrôles de validateur. Étant donné que, en tant que développeur de page Web, vous n'avez pas nécessairement un contrôle direct sur ce que les contrôles de connexion restituent, les contrôles sont conçus en prenant en compte les questions d'accessibilité. Par exemple, les contrôles présentent le comportement suivant pour prendre en charge l'accessibilité :
Les zones de texte ont des étiquettes associées.
Les contrôles d'entrée ont des paramètres d'index de tabulation.
Toutefois, si vous créez des modèles pour ces contrôles de connexion, vous devez configurer les contrôles dans les modèles afin que les contrôles se conforment aux règles d'accessibilité.
Script client et contrôles serveur ASP.NET
Les normes WCAG recommandent que les pages n'utilisent pas le script client dans un but fonctionnel, mais uniquement pour des effets accessoires, tels que les effets de substitution de souris. Les règles de la section 508 permettent l'utilisation de script client, si les technologies d'assistance peuvent fonctionner avec toutes les valeurs qui sont retournées par le script.
Plusieurs contrôles serveur Web ASP.NET dépendent du script client. Par exemple :
Les contrôles LinkButton et ImageButton requièrent que le script client effectue des publications (postback).
Le contrôle Calendar requiert que le script client prenne en charge le clic effectué sur les liens de jour.
Les contrôles WebPart reposent sur le script client pour les liens de fermeture, de réduction et de modification.
Pour obtenir la liste complète des contrôles qui utilisent le script client, consultez Contrôles serveur Web ASP.NET qui utilisent un script client.
Par conséquent, si vous utilisez chacun des contrôles d'une page qui requièrent le script client, votre page ne se conformera pas aux normes WCAG. Si votre application Web doit être 100 pour cent conforme avec les normes WCAG, vous ne pouvez utiliser tous les contrôles de la page qui reposent sur le script client. Toutefois, ces contrôles se conforment aux normes de la section 508 pour l'utilisation de script client dans une page.