aboutsummaryrefslogtreecommitdiff
path: root/files/fr/accessibilité/aria/faq_applications_web_et_aria/index.html
blob: 01b32548d28dd4e99bd51b3914b8d2c83f4a9369 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
---
title: FAQ Applications Web et ARIA
slug: Accessibilité/ARIA/FAQ_Applications_Web_et_ARIA
tags:
  - ARIA
  - Accessibilité
  - Développement Web
  - À relire
translation_of: Web/Accessibility/ARIA/Web_applications_and_ARIA_FAQ
---
<h2 id="Qu’est-ce_qu’ARIA">Qu’est-ce qu’ARIA ?</h2>

<p>WAI-ARIA est la spécification <a class="external" href="http://www.w3.org/WAI/intro/aria.php" hreflang="en" title="http://www.w3.org/WAI/intro/aria.php">Applications Internet Riches Accessibles</a> de la <a class="external" href="http://www.w3.org/WAI/" hreflang="en" title="http://www.w3.org/WAI/">Web Accessibility Initiative</a> (Initiative pour l’accessibilité du Web) du <a class="external" href="http://www.w3.org/" hreflang="en" title="http://www.w3.org/">W3C</a>. ARIA fournit des moyens de rendre plus accessible les applications Web et les composants dynamiques à une plus grande part des utilisateurs, y compris ceux utilisant des technologies d’assistance telles que les lecteurs d’écrans ou les agrandisseurs.</p>

<p>ARIA fournit des éléments sémantiques additionnels afin de décrire les rôles, les états et la fonction de nombreux contrôles d’interfaces utilisateurs répandus, tels que les menus, les curseurs, les arbres et les dialogues. Il fournit également des informations structurelles supplémentaires, permettant aux auteurs d’identifier des points de repère, des zones et des grilles dans leurs pages Web. ARIA permet aux applications et aux composants JavaScript dynamiques d’interagir avec une grande variété de technologies d’assistance de bureau.</p>

<p>Pour plus d’informations sur la création de composants dynamiques accessibles avec ARIA, lire l’article <a href="/fr/docs/Accessibilité/Aperçu_d_applications_Web_et_de_composants_dynamiques_accessibles" title="Aperçu d’applications Web et de composants dynamiques accessibles">Aperçu d’applications Web et de composants dynamiques accessibles</a>.</p>

<h2 id="Où_ARIA_est-il_pris_en_charge">Où ARIA est-il pris en charge ?</h2>

<p>ARIA est une spécification relativement récente, mais son implémentation se développe. Une large variété de navigateurs communément utilisés, de technologies d’assistance, de kits de développements JavaScript et d’applications prennent maintenant en charge ARIA. Toutefois, de nombreux utilisateurs peuvent encore utiliser d’anciennes versions de ces technologies. Vous devrez sans doute considérer l’implémentation d’ARIA à l’aide des techniques d’améliorations progressives – telle qu’ajouter ARIA en utilisant JavaScript, mais pas directement dans votre balisage – afin de prendre en charge de manière plus élégante les vieux navigateurs et les anciennes technologies d’assistance.</p>

<h3 id="Navigateurs">Navigateurs</h3>

<p>ARIA est pris en charge dans les navigateurs suivants :</p>

<table class="standard-table">
 <tbody>
  <tr>
   <th>Navigateur</th>
   <th>Version minimale</th>
   <th>Notes</th>
  </tr>
  <tr>
   <td>Firefox</td>
   <td>3.0+</td>
   <td>Fonctionne avec NVDA, JAWS 10+ et Orca</td>
  </tr>
  <tr>
   <td><a class="external" href="http://dev.chromium.org/developers/design-documents/accessibility#TOC-WAI-ARIA-Support" hreflang="en" title="http://dev.chromium.org/developers/design-documents/accessibility#TOC-WAI-ARIA-Support">Chrome</a></td>
   <td>Dernière</td>
   <td>Prise en charge encore expérimentale des lecteurs d’écran jusqu’à Chrome 15</td>
  </tr>
  <tr>
   <td>Safari</td>
   <td>4+</td>
   <td>La prise en charge par Safari 5 est grandement améliorée.<br>
    La prise en charge des zones live requiert Safari 5 avec VoiceOver sur iOS5 ou OS X Lion</td>
  </tr>
  <tr>
   <td><a class="external" href="http://www.opera.com/docs/specs/presto28/wai-aria/roleattributes/" hreflang="en" title="http://www.opera.com/docs/specs/presto28/wai-aria/roleattributes/">Opera</a></td>
   <td>9.5+</td>
   <td>Requiert VoiceOver sous OS X. À définir : comment cela fonctionne-t-il actuellement ?</td>
  </tr>
  <tr>
   <td><a class="external" href="http://msdn.microsoft.com/en-us/library/cc891505%28v=vs.85%29.aspx" hreflang="en" title="http://msdn.microsoft.com/en-us/library/cc891505(v=vs.85).aspx">Internet Explorer</a></td>
   <td>8+</td>
   <td>Fonctionne avec JAWS 10+ et NVDA. Pas de prise en charge des zones live dans NVDA.<br>
    La prise en charge dans IE9 est grandement améliorée.</td>
  </tr>
 </tbody>
</table>

<p>Dans certains cas, les versions les plus jeunes peuvent prendre en charge certaines fonctionnalités d’ARIA. Des tableaux de compatibilité des navigateurs peuvent être consultés depuis différentes sources :</p>

<ul>
 <li><a class="external" href="http://caniuse.com/wai-aria" hreflang="en" title="http://caniuse.com/wai-aria">caniuse.com</a></li>
 <li><a class="external" href="http://www.paciellogroup.com/blog/aria-tests/ARIA-SafariaOperaIEFF-update2.html" hreflang="en" title="http://www.paciellogroup.com/blog/aria-tests/ARIA-SafariaOperaIEFF-update2.html">Le groupe Paciello</a></li>
</ul>

<h3 id="Technologies_d’assistance">Technologies d’assistance</h3>

<p>Les technologies d’assistance adoptent de plus en plus ARIA. Certaines d’entre elles sont :</p>

<table class="standard-table">
 <tbody>
  <tr>
   <th>Technologies d’assistance</th>
   <th>Version minimale pour un ARIA de base</th>
   <th>Version minimale pour la prise en charge des zones live et des alertes</th>
  </tr>
  <tr>
   <td>NVDA</td>
   <td>2010.2<br>
    (NVDA propose toujours des mises à jour gratuites)</td>
   <td>2011.1 pour Firefox, pas de prise en charge des zones live dans IE avant 2011.2.</td>
  </tr>
  <tr>
   <td>Orca</td>
   <td>? (À définir)</td>
   <td>? (À définir)</td>
  </tr>
  <tr>
   <td>VoiceOver</td>
   <td>OSX 10.5,<br>
    iOS 4</td>
   <td>OS X 10.7<br>
    iOS 5</td>
  </tr>
  <tr>
   <td>JAWS</td>
   <td>8</td>
   <td>10</td>
  </tr>
  <tr>
   <td>Window-Eyes</td>
   <td>7</td>
   <td>Pas de prise en charge des zones live</td>
  </tr>
  <tr>
   <td>ZoomText</td>
   <td>?</td>
   <td>Pas de prise en charge des zones live</td>
  </tr>
 </tbody>
</table>

<p>Note : Les versions antérieures de ces outils ont souvent des implémentation d’ARIA partielles et défaillantes.</p>

<p>For notes on JAWS support for ARIA as of JAWS 10, lire cet article du <em>groupe Paciello</em> : <a class="external" href="http://www.paciellogroup.com/blog/2010/10/jaws-support-for-aria/" hreflang="en" title="http://www.paciellogroup.com/blog/2010/10/jaws-support-for-aria/">JAWS Support for ARIA</a>.</p>

<h3 id="Kits_de_développement_JavaScript">Kits de développement JavaScript</h3>

<p>Les rôles, les états et les propriétés ARIA ont été ajoutées à de nombreux kits de développements d’interfaces utilisateur JavaScript, y compris :</p>

<ul>
 <li>Dojo/Dijit</li>
 <li>jQuery UI</li>
 <li>Fluid Infusion</li>
 <li>Google Closure</li>
 <li>Google Web Toolkit</li>
 <li>BBC Glow</li>
 <li>Yahoo! User Interface Library (YUI)</li>
</ul>

<p>Pour plus d’informations sur l’accessibilité des kits de développement JavaScript :</p>

<ul>
 <li><a class="external" href="http://www.paciellogroup.com/blog/2009/07/wai-aria-implementation-in-javascript-ui-libraries/" hreflang="en" title="WAI-ARIA Implementation in JavaScript UI Libraries">WAI-ARIA Implementation in JavaScript UI Libraries</a> (Implémentation de WAI-ARIA dans les bibliothèques JavaScript d’UI) de Steve Faulkner</li>
</ul>

<h2 id="Pouvez-vous_me_montrez_un_exemple_d’ARIA_en_action">Pouvez-vous me montrez un exemple d’ARIA en action ?</h2>

<p><a name="aria-in-action">Voici le code HTML pour une barre de progression :</a></p>

<pre class="brush:html;">&lt;div id="percent-loaded" role="progressbar" aria-valuenow="75" aria-valuemin="0" aria-valuemax="100" /&gt;
</pre>

<p>Cette barre de progression est construite à l’aide de l’élément <code>&lt;div&gt;</code>, qui n’est pas des plus descriptif. Malheureusement, en HTML4 il n’existe pas de balise plus sémantique pour les développeurs, aussi avons nous besoin d’inclure les rôles et les propriétés ARIA. Ils sont spécifiés en ajoutant des attributs à l’élément <code>&lt;div&gt;</code>. Dans cet exemple, l’attribut <code>role="progressbar"</code> informe le navigateur que cet élément est actuellement un composant de barre de progression codé en JavaScript. Les attributs <code>aria-valuemin</code> et <code>aria-valuemax</code> spécifient les valeurs limites de la barre de progression, et <code>aria-valuenow</code> décrit a valeur courante.</p>

<p>Plutôt que de les intégrer directement dans le balisage, les attributs ARIA sont généralement ajoutés à l’élément et dynamiquement actualisés à l’aide de code JavaScript tel que celui-ci :</p>

<pre class="brush: javascript" id="line96">// Trouver le &lt;div&gt; de la barre de progression dans le DOM.
var progressBar = document.getElementById("percent-loaded");

// Définition de ses rôles et états ARIA ,
// pour que les technologies d’assistance sachent quel type de composant il s’agit.
progressBar.setAttribute("role", "progressbar");
progressBar.setAttribute("aria-valuemin", 0);
progressBar.setAttribute("aria-valuemax", 100);

// Création d’une fonction qui peut être appelée à n’importe quel moment
// pour actualiser la valeur de la barre de progression.
function updateProgress(percentComplete) {
  progressBar.setAttribute("aria-valuenow", percentComplete);
}</pre>

<h2 id="L’ajout_d’ARIA_changera-t-il_le_style_ou_le_comportement_de_mes_pages">L’ajout d’ARIA changera-t-il le style ou le comportement de mes pages ?</h2>

<p>Non, ARIA n’est rendu disponible que pour les APIs des technologies d’assistance, et n’affecte pas les fonctionnalités natives du navigateur en respectant le DOM ou les styles. Du point de vue des navigateurs, le HTML natif définit le sens et le comportement sémantique d’un élément, et les attributs ARIA agissent comme une surcouche permettant de prendre en charge les APIs des technologies d’assistance. Bien qu’ARIA ne modifiera aucun style par lui-même, comme pour tous les attributs HTML les CSS peuvent profiter des attributs ARIA comme sélecteurs d’élément. Ceci peut fournir un mécanisme pratique pour styles les composants intégrant ARIA.</p>

<pre class="brush: css">.tab-panel[aria-hidden="true"] {
  display: none;
  }

.tab-panel[aria-hidden="false"] {
  display: block;
  }
</pre>

<h2 id="Qu'en_est-il_de_la_validation">Qu'en est-il de la validation ?</h2>

<p>Les nouveaux attributs introduits dans ARIA, tels que les <strong><code>role</code></strong> et ceux préfixés avec <strong><code>aria-</code></strong>, ne font pas officiellement partie des spécification HTML 4 ou XHTML 4. À ce titre, les pages comportant des éléments ARIA peuvent ne pas être valides lorsqu’on les soumet au <a class="external" href="http://validator.w3.org/" hreflang="en" title="http://validator.w3.org/">validateur du W3C</a>.</p>

<p>La première solution possible à ce problème est d’éviter de placer les rôles et les états ARIA directement dans le code HTML. À la place, il faut utiliser JavaScript pour ajouter dynamiquement ARIA à votre page, tel que montré dans la réponse à la question <a href="#aria-in-action" title="#aria-in-action">Pouvez-vous me montrez un exemple d’ARIA en action ?</a> ci-dessus. Votre page sera toujours théoriquement invalide, mais elle passera correctement toutes les contrôles de validation statiques.</p>

<p>Une autre alternative est l’utilisation d’un <em>doctype</em> HTML5, qui prend nativement en charge . Le validateur HTML5 du W3C trouvera même pour vous les utilisations non valides d’ARIA dans les pages HTML5.</p>

<h2 id="Comment_HTML5_s’associe-t-il_avec_ARIA">Comment HTML5 s’associe-t-il avec ARIA ?</h2>

<p>HTML5 introduit de nombreuses nouvelles balises sémantiques. Certaines d’entre elles recoupent les rôles ARIA, tel que le nouvelle élément <code>&lt;progress&gt;</code>. Dans le cas où le navigateur prend en charge une balise HTML5 qui existe également dans ARIA, il n’est généralement pas nécessaire d’ajouter les rôles et les états ARIA à l’élément. ARIA comprend de nombreux rôles, états et propriétés qui ne sont pas disponibles en HTML5, aussi continueront-ils d’être utiles aux développeurs HTML5. Pour plus d’informations, Steve Faulkner a écrit un très bon <a class="external" href="http://www.paciellogroup.com/blog/2010/04/html5-and-the-myth-of-wai-aria-redundance/" hreflang="en" title="HTML5 and the Myth of WAI-ARIA Redundance">aperçu des relations entre HTML5 et ARIA</a>.</p>

<h4 id="Dégradation_élégante_de_HTML5_vers_ARIA">Dégradation élégante de HTML5 vers ARIA</h4>

<p>Pour fournir du contenu aux navigateurs qui n’implémentent pas HTML5, vous pouvez considérer une dégradation élégante de l’utilisation d’ARIA là où c’est nécessaire. Ainsi, en utilisant l’exemple de la barre de progression, vous pouvez dégrader élégamment un <code>role="progressbar"</code> pour les cas où la balise <code>&lt;progressbar&gt;</code> n’est pas prise en charge.</p>

<p>Voici un exemple de code utilisé pour une barre de progression en HTML5 :</p>

<pre class="brush: html" id="line96">&lt;!DOCTYPE html&gt;
&lt;html&gt;
  &lt;head&gt;&lt;title&gt;Dégrader élégamment la barre de progression&lt;/title&gt;&lt;/head&gt;
  &lt;body&gt;
    &lt;progress id="progress-bar" value="0" max="100"&gt;0% complété(s)&lt;/progress&gt;
    &lt;button id="update-button"&gt;Actualiser&lt;/button&gt;
 &lt;/body&gt;
&lt;/html&gt;
</pre>

<p>… et voici le code JavaScript qui assurera le fonctionnement de la barre de progression même dans les navigateurs les plus anciens :</p>

<pre class="brush: javascript" id="line97">var progressBar = document.getElementById("progress-bar");

// Vérifions que le navigateur implémente la balise HTML5 &lt;progress&gt;.
var supportsHTML5Progress = (typeof (HTMLProgressElement) !== "undefined");

function setupProgress() {
  if (!supportsHTML5Progress) {
    // HTML5 &lt;progress&gt; n’est pas implémenté dans ce navigateur, aussi
    // avons-nous besoin d’ajouter des rôles et des états ARIA à l’élément.
    progressBar.setAttribute("role", "progressbar");
    progressBar.setAttribute("aria-valuemin", 0);
    progressBar.setAttribute("aria-valuemax", 100);
  }
}

function updateProgress(percentComplete) {
  if (!supportsHTML5Progress) {
    // HTML5 &lt;progress&gt; n’est pas implémenté dans ce navigateur,
    // aussi avons-nous besoin de mettre à jour l’attribut aria-valuenow
    progressBar.setAttribute("aria-valuenow", percentComplete);
  } else {
    // HTML5 &lt;progress&gt; is supported, so update the value attribute instead.
    progressBar.setAttribute("value", percentComplete);
  }

  progressBar.textContent = percentComplete + "% complété(s)";
}

function initDemo() {
  setupProgress(); // Setup the progress bar.

  // Lier un événement clic au bouton, ce qui actualisera la barre de progression à 75%.
  document.getElementById("update-button").addEventListener("click", function (e) {
    updateProgress(75);
    e.preventDefault();
  }, false);
}
initDemo();
</pre>

<h2 id="Comment_fonctionnent_les_technologies_d’assistance">Comment fonctionnent les technologies d’assistance ?</h2>

<p>Les technologies d’assistance utilisent une API intégrée à chaque système d’exploitation spécifiquement conçue pour décrire les rôles, les états et la structure de l’interface utilisateur d’une application. Par exemple, un lecteur d’écran utilise cette API pour lire l’interface utilisateur avec un moteur de synthèse vocale (text-to-speech), une loupe l’utilise pour mettre en évidence les zones importantes ou actives de l’écran et un clavier virtuel peut s’en servir pour fournir la disposition de clavier la plus efficace dans un contexte donné ou au contrôle d’une interface utilisateur. Les technologies d’assistance accèdent souvent au DOM d’une page au travers de cette API afin de comprendre la sémantique et les attributs de la page.</p>

<p>ARIA fournit un pont entre le monde du DOM et le bureau. Les navigateurs exposent les éléments ARIA aux API des technologies d’assistance comme s’ils étaient des composants natifs. En conséquence, l’utilisateur a potentiellement une expérience plus cohérente là où les composants dynamiques JavaScript sont comparables sur le Web à leurs équivalents bureau.</p>

<h2 id="Comment_tester_mon_utilisation_d’ARIA_Existe-t-il_des_outils_libres_ou_gratuits">Comment tester mon utilisation d’ARIA ? Existe-t-il des outils libres ou gratuits ?</h2>

<p>Il existe plusieurs outils d’inspection et de débogage pour vous aider à tester le comportement d’ARIA :</p>

<ul>
 <li><em>Object Inspector</em> sur Windows</li>
 <li><em>Accessibility Inspector</em> sur Mac OS X</li>
 <li><em>AccProbe</em> sur Linux</li>
 <li><em>Inspecteur DOM</em> de Firebug</li>
 <li>L’<a class="external" href="http://code.google.com/p/ainspector/" hreflang="en" title="http://code.google.com/p/ainspector/"><em>Inspecteur d’accessibilité</em> de Firebug</a></li>
</ul>

<p>Il existe plusieurs lecteurs d’écran gratuits voire libre qui peuvent être utilisés pour mener des tests sur ARIA. On trouve :</p>

<ul>
 <li><a class="external" href="http://live.gnome.org/Orca" hreflang="en" title="http://live.gnome.org/Orca">Orca</a> pour Linux</li>
 <li><a class="external" href="http://www.nvda-project.org/" hreflang="en" title="http://www.nvda-project.org/">NVDA</a> pour Windows</li>
 <li><a class="external" href="http://www.apple.com/accessibility/voiceover/" hreflang="en" title="http://www.apple.com/accessibility/voiceover/">VoiceOver</a> est intégré à Mac OS X</li>
</ul>

<p>Lorsque vous effectuez des tests avec un lecteur d’écran, gardez deux points importants en tête :</p>

<ol>
 <li>Les tests occasionnels avec un lecteur d’écran ne pourront jamais remplacer les retours d’expérience, les tests ou l’aide de véritables utilisateurs au quotidien.</li>
 <li>L’accessibilité est plus vaste que la simple prise en charge des lecteurs d’écran. Essayez de mener des tests avec divers cas d’utilisation et techniques d’accessibilité.</li>
</ol>

<p>Autres techniques et outils de tests pratiques pour les applications et les composants intégrant ARIA :</p>

<ul>
 <li><a class="external" href="http://yaccessibilityblog.com/library/test-aria-focus-bookmarklets.html" hreflang="en" title="Test ARIA Focus Bookmarklets">Yahoo!'s ARIA bookmarklets</a></li>
 <li><a class="external" href="http://wiki.fluidproject.org/display/fluid/Simple+Accessibility+Review+Protocol" hreflang="en" title="Simple Accessibility Review Protocol">simple accessibility evaluation techniques</a> du <em>Fluid Project</em> (techniques simples d’évaluation de l’accessibilité)</li>
</ul>

<h2 id="Où_se_tiennent_les_discussion_concernant_ARIA">Où se tiennent les discussion concernant ARIA ?</h2>

<ul>
 <li><a class="external" href="http://lists.w3.org/Archives/Public/wai-xtech/" hreflang="en" title="WAI XTech Public List">Liste de diffusion Wai-xtech</a> – Discussions sur les spécification d’ARIA.</li>
 <li><a class="external" href="http://groups.google.com/group/free-aria" hreflang="en" title="http://groups.google.com/group/free-aria">groupe Google Free-ARIA</a> – pour les développeurs et les utilisateurs d’outils et de ressources libres.</li>
</ul>

<h2 id="Où_peut-on_en_apprendre_davantage_à_propos_d’ARIA">Où peut-on en apprendre davantage à propos d’ARIA ?</h2>

<ul>
 <li><a href="/fr/docs/Accessibilité/Aperçu_d_applications_Web_et_de_composants_dynamiques_accessibles" title="Aperçu d’applications Web et de composants dynamiques accessibles">Aperçu d’applications Web et de composants dynamiques accessibles</a></li>
 <li><a href="/fr/docs/Accessibilité/Formulaires_accessibles" title="Formulaires_accessibles">Formulaires accessibles</a></li>
 <li>La <a class="external" href="http://www.w3.org/WAI/aria/faq" hreflang="en" title="http://www.w3.org/WAI/aria/faq">FAQ WAI-ARIA</a> du W3C.</li>
 <li><a class="external" href="http://webaim.org/techniques/aria/" hreflang="en" title="http://webaim.org/techniques/aria/">Accessibility of Rich Internet Applications</a> (Accessibilité des applications Internet riches) de WebAIM.</li>
</ul>