Les images utilisées dans cette présentation sont extraites des films « alice au pays des...
-
Upload
marceline-grenier -
Category
Documents
-
view
104 -
download
0
Transcript of Les images utilisées dans cette présentation sont extraites des films « alice au pays des...
Les images utilisées dans cette présentation sont extraites des films « alice au pays des merveilles » de Tim Burton et « 2001 l ’odysée de l’espace » de Stanley Kubric
Une (très) brèveHistoire du
Web Dynamique
Images
Liens Formulaires
MultimédiaTextes
Des Contenus Structurés Des effets dynamiques
Menu Déroulant
De la neige en hiver
Contrôle de formulaire
199919991995199519921992
HTML 1.0 Javascript HTML 4.01
HTML Javascript
20002000
XHTML
XMLHttpRequest2002
Images
Liens Formulaires
MultimédiaTextes
Des Contenus Structurés
19981998
MSXML
HTML Javascript
Ajax
NouveauxComposantsApplication
RIA
Du comportement
20022002
XmlHttpRequest
20052005
Ajax
20062006
ARIA
20142014
HTML5
HTML ne permet pas de créer des composants
Le web fonctionne en mode client-serveur
Limités à
Le lien
Les éléments deformulaire
Une action
Un rechargementde page
Les limites du développement Web classique
Créer des composantsen ajoutant du comportement
sur des éléments HTMLquelconques
Code Html du slider Rechargement
De page
Ajax
Gérer les requêtes client-serveur
via l’objet JavascriptXMLHttpRequest
La solution : utiliser Javascript pour :
<div><span>0%</span><div><a></a></div></div>
Le Web Dynamiqueet l’utilisateur
Technologie d’assistance
API Accessibilité Système
Navigateur Web
Comment un lecteur d’écran sait de quoi il parle ?
Zone de liste déroulante Choose one or more users avery 1 sur 4
Pour HTML tout est défini dans les spécifications
Lien, c’est super
Titre de niveau 1, c’est super
Graphique, c’est super
Bouton, c’est super
<a href=‘’> C’est super </a>
<h1> C’est super </h1>
<img src=‘’ alt=‘C’est super’ />
<input type=‘submit’ value=‘C’est super’ />
Case à cocher, cochée,c’est super
Le lecteur d’écran dispose de toutes les informations renvoyées par le navigateur et les adapte comme il le souhaite :
Avec JavascriptLes problématiques
utilisateurs
Problème pour l’utilisateur
C’est quoi ce truc ?
Volume 0%<div><span>0%</span><div><a></a></div></div>
Heu …
Volume 0%<div><span>0%</span><div> <a></a></div></div>
Volume 48%
Ha! bon …
<div><span> 48% </span><div> <a></a></div></div>
Identifier – Utiliser - Comprendre
Problème pour l’utilisateur
Cool…
Afficher les actualités
Vous êtes ici
Afficher les actualités
Ha! bon…
AJAXVous êtes toujours ici !
Problème pour l’utilisateur
<div style="display: block;" class="jcarousel-next ></div>
Navigation Clavier HTML
Limitée à
Le lien
Les éléments deformulaire
L’élémentobject
<div style="display: block;" class="jcarousel-prev></div>
Navigation Clavier Javascript
Je peux Je peux pas
Solution : ARIADéfinir les composantsDéfinir la structure
SliderNavigationMenuApplicationBanner
1 Informer de l’état et des propriétés d’un
composant
2
Volume 48%
valuenow:48%« 48%, 49%... »
Informer des misesà jour dynamiques
3
Live region
Rendre les composantsutilisables au
clavier
4
TabindexFlèche de direction
Définit des attributs et des valeursrôle
(slider, menu, navigation, application…)
state, propertiescheked, valuenow, expanded, labeledby
Etend le rôle de tabindex
Tabindex=0
Tabindex=-1
focus
focus
Contenu
Javascript
Navigateur Aria
API ACC Système
Information
« 48%, 49%... »
<h2 id="label_1">Foods</h2>
<ul id="tree1" class="tree" role="tree" aria-labelledby="label_1">
<li class="groupHeader" id="fruits" role="treeitem" tabindex="0" aria-expanded="true">
<ul role="group"> <li id="oranges" role="treeitem" tabindex="-1">Oranges</li>
<li class="groupHeader" id="apples" role="treeitem" tabindex="-1" aria-expanded="false">
Exemplesd’attributs ARIA
RôleLabelledbyExpandedTabindex
L’implémentation utilise de simples attributs HTML
Les valeurs dynamiques sont gérées depuis la couche Javascript
Les comportements (l’affichage d’un sous-niveau de liste, par exemple ) sont également gérésdepuis la couche Javascript
ARIA par l’exemple
1. Guider l’utilisateurLes landmarks
Les landmarks, role= banner, main, search… Objectif : créer des points de repère et de navigation dans la structure de la page
banner : zone d’en-tête
navigation
zone de navigation
Main : la zone de contenu principal
contentinfo: zone d’information propre au document
search: zone de recherche
complementary
zone de contenu
complémentaire
form
zone de formulaire
applicationzone qui
contient une « application »
Le rôle application indique aux technologies d’assistance de modifier la gestion des évènements claviers, la navigation notamment, pour utiliser la configuration habituelle dans une application logicielle
!!
banner
main
contentinfo
search
complementary
Exemple : Implémentation des landmarks chez Alsacréationsnavigation
2. Les boites de dialogue
Les boites de dialogue : role = alertdialog
InconvénientPas stylableN’accepte que du texte
AvantageC’est une vraie fenêtre modaleNe nécessite aucun traitement
Alerte Javascript
InconvénientCe n’est pas une vraie fenêtre modale
AvantagePersonnalisable à 100%
Alerte ARIA
Objectif : créer une boite d’alerte alternative aux méthodes alert, promprt, confirm de JS. Attention : il faut maîtriser les limites des boites de dialogues ARIA !
3. Des composantscomplexes
User Friendly
Le Slider clandestin
……
<div...><img …/></div>
Le Slider qui parle
<div><span>0$</span><a href=‘#’ aria-valuenow="0" aria-valuetext="0 $" role="slider" aria-valuemin="0" aria-valuemax="100" title="price" style="left: 0%;"></a></div>
price Potentiomètre 0 $1 $2 $3 $4 $5 $6 $
Exemple : une barre de progression, role=progressbar
<div role="progressbar" aria-valuemin="0" aria-valuemax="100" aria-valuenow="0" aria-labelledby="progressMsg" aria-valuetext=‘’0 %"></div>
Le principe est identique à celui d’un slider et utilise les mêmes attributs et le même fonctionnement enchainé. Implicitement, le composant est déclaré en « readonly » de telle sorte que l’utilisateur ne puisse pas interagir avec lui.
NVDA propose deux restitutions :Vocale (annonce des valeurs)Par bip sonore
Par défaut, Jaws annonce la valeur atteinteà intervalles réguliers
Exemple : messages avec labelledby et describedbylabelledby et describedby permettent de lier des contenus les uns aux autres.Ces deux attributs sont omniprésents dans les implémentations ARIA.L’une des utilisations est de produire des messages lors de l’utilisation d’un composant.
Commande de fruits groupage
Quantité 10 kilos
édition avec autocomplétion
Attention au délai :Plus de 30 kg : prévoir 10 jours….sélectionné 10
Id : uniteId : unite
<input id="commande" value="10" aria-labelledby="label commande unite" aria-describedby="disponible" type="text">
Id : commandeId : commande
Id : disponibleId : disponibleId : labelId : label
4. Les Live Régions
Les live region, la propriété aria-liveObjectif : informer des mises à jour dynamiques et gérer l’interaction entre la zone de mise à jour et les actions de l’utilisateur
Propriétés aria-live
aria-live=off Valeur par défaut, la zone n’est pas lue du tout.
aria-live=polite La zone est lue quand l’utilisateur a terminé son action.
aria-live=assertive La zone est lue en interrompant l’utilisateur dés que c’est possible.
aria-live=rude La zone est lue en interrompant l’utilisateur immédiatement.
Les live region, les propriétés complémentairesObjectif : informer de l’état de la zone mise à jour, gérer le contenu de la zone mise à jour
Propriétés
atomic = true/false Toute la zone ou seulement la partie mise à jour est lue
relevant = additions /removalLes ajouts et les suppressions de contenus (dom) sont signalés
relevant=text/all Seuls les changements de texte ou tous les changements sont signalés
aria-busy=true/false Signale que la zone est en train d’être mise à jour
Une live region avec aria-live polite
La zone mise à jour est lue
aria-live=‘’polite’’aria-live=‘’polite’’
L’utilisateur est occupé; la zone n’est plus lue
focus()focus()
Live regions : un chat avec ajax et aria-live
<ul aria-atomic="false" aria-live="polite" id="chat-area"><li class="welcome"> Bienvenue</li><li><span>Invité </span>Bonjour tout le monde</li> </ul>
Lire uniquement le contenu mis à jour, c’est-à-dire le dernier texte inséré.
Lire la zone mise à jour quand l’utilisateur est disponible.Donc, quand il a terminé, son message notamment.
http://ideance.net/publications/live-regions/index.html
Contrôle au clavier
Contrôles au clavier, la problématique
Paradigme
Tout est utilisable avec la touche de tabulation
Pour certains éléments comme les listes de formulaires les flèches de direction servent à naviguer dans les éléments (item de liste)
HTML
Principes
La touche tabulation navigue d’un composant à l’autre
Des touches dédiées comme les flèches de direction, la touche escape, la barre d’espace apportent des fonctionnalités de contrôle
ARIA
C’est une problématique très difficile.
Il faut s’inspirer du fonctionnement de
applications!!
Contrôles au clavier, la navigation
tabindex=0
tabindex=-1
flêches de direction
barre d’espace
touche escape
Permet à un élément quelconque de recevoir le focus de tabulation
Retire un élément du plan de tabulation
Naviguer dans les éléments d’un composant
Activer / désactiver
Désactiver /annuler une action
Touches dédiées
Contrôles au clavier, exemples
Naviguer dans une fausse fenêtre modale
Gérer la navigation dans le système d’actualité de Yahoo
Naviguer dans un système d’onglets
Problématiques utilisateurs
Les technologies d’assistance annoncent, pour certains rôle le type de navigation attendue.
Exemple avec slider et jaws : « utiliser les touches flèchés… ».
Comment être sur que c’est réellement le cas ?
Les utilisateurs qui ne peuvent pas utiliser de souris ne recoivent pas d’informations sur la navigation
Comment les informer ?
Conserver le paradigme de tabulation et ajouter des
navigations auxiliaires
Respecter impérativement les
Design Pattern préconisés par
ARIA!!
Tester ARIA
Problématiques utilisateursOutils d’inspection
d’évènement, attributs et propriétés
Les technologies d’assistance
JAWS / NVDA
Visioneuse de parole
Inspect 32 ICITA Toolbar
Juicy Toolbar
Sur des applications RIA complexes.
Tests Utilisateurs!!
Merci de votre attention
Les démos de l’atelier sont disponibles sur www.qelios.net/demo_aria