viernes, 6 de septiembre de 2013

El uso de tabindex para mejorar la accesibilidad

En WAI-ARIA se redefine el comportamiento del atributo tabindex de HTML. En WAI-ARIA 1.0 Primer está explicado en el punto 2.1.3. Provision of the Keyboard or Input Focus: "What object am I working on?".

En HTML 4.01 y XHTML 1.x, sólo los controles de los formularios (button, input, select, textarea), los enlaces (a y area) y los objetos (object) pueden recibir el foco. Esto dificulta el desarrollo de interfaces avanzadas en las que con los eventos (onclick, onkeydown) podemos hacer que se pueda interactuar con cualquier elemento de la página.

En WAI-ARIA se puede emplear tabindex para permitir que un elemento cualquiera pueda recibir el foco:
  • Si no está el atributo tabindex, el comportamiento es el normal, y sólo los controles de un formulario pueden recibir el foco con el ratón o desde JavaScript con element.focus().
  • Si tabindex toma un valor negativo (tabindex="-1"), el elemento puede recibir el foco con el ratón o desde JavaScript con element.focus(), pero no se puede navegar a él mediante la tecla tabulación, es decir, el elemento no está en el flujo normal de tabulación.
  • Si tabindex toma el valor cero (tabindex="0"), el elemento puede recibir el foco con el ratón o desde JavaScript con element.focus(), y se puede navegar a él mediante la tecla tabulación (la posición que ocupa en el orden de tabulación es la correspondiente a su posición en el documento).
  • Finalmente, si tabindex toma un valor positivo (tabindex="1"), el elemento puede recibir el foco con el ratón o desde JavaScript con element.focus(), se puede navegar a él mediante la tecla tabulación, y el valor del atributo indica su posición en el orden de tabulación; además, se colocan por delante de cualquier elemento que tenga tabindex="0" o cualquier elemento que reciba el foco de forma natural (los controles de los formularios y los enlaces).
Bueno, esto es la teoría... luego falta que los navegadores y los lectores de pantalla la cumplan.

En tabindex, keyboard focus and some ARIA in screen readers, se presentan los resultados de unas pruebas realizadas con diferentes ejemplos en diferentes navegadores y con diferentes lectores de pantalla. Con JAWS los resultados son los adecuados con Internet Explorer y Firefox, pero con otros lectores de pantalla (NVDA, SAToGo, Windows-Eyes y VoiceOver) ocurren algunas cosas raras.