Uninstallme

La Web se ideó cuadrada.

Aplicaciones útiles para una revisión de accesibilidad (contraste de color)

29 de Diciembre 2008

Dejo un par de aplicaciones gratuitas de Fujitsu, descubiertas a través de Utilidades para Webmasters, de gran utilidad para detectar y prevenir problemas de accesibilidad causados por un contraste de color insuficiente o la transmisión de información basada sólo en el color.

ColorSelector permite comprobar el contraste de color de cualquier imagen o texto con bastante más precisión que el ya conocido Color Contrast Analyser. Otra ventaja respecto a este, es que nos proporciona una información “más amigable” sobre las deficiencias visuales para las que una combinación de colores puede ser problemática.

Captura de ColorSelector

Una aplicación muy útil para comprobar el contraste de imágenes con contenido textual en la fase de diseño.

La otra aplicación es ColorDoctor, que muestra una página web simulando varias deficiencias visuales o en escala de grises. Esta última opción es especialmente útil para detectar información transmitida sólo mediante el color, como podrían ser los típicos iconos con banderas de países para seleccionar el idioma o enlaces diferenciados del texto solamente mediante un color distinto.

Esta aplicación permite hacer la transformación en tiempo real (marcando la opción Real-time conversion), con lo que no sólo obtenemos una simple captura de pantalla como hacen otras aplicaciónes, sino que podemos ver también los cambios de color para el estado hover, animaciones, etc.

Captura de ColorDoctor

Archivado en Accesibilidad, Programas, Utilidades

Comentar

Autocompletado accesible para resultados de búsqueda

20 de Diciembre 2008

En mis últimos trasteos con el blog, he incorporado un “autocompletado” para el formulario de búsqueda. (Utilizo el término autocompletado porque es el más común, aunque yo simplemente lo llamaría resultados de búsqueda instantáneos.)

El funcionamiento se basa en hacer una petición AJAX para la consulta que estamos escribiendo en el campo de búsqueda cada vez que se pulse una tecla, a partir de 3 caracteres escritos. El resultado de esto es una lista que se va actualizando mientras escribimos, con las entradas que coinciden con nuestra búsqueda, con lo que, deseáblemente, los resultados se muestran de forma predictiva.

Ventajas de este sistema:

  • La obtención de resultados es mucho más rápida que si tuviéramos que cargar la página completa.
  • La aparición de la lista de resultados mientras se escribe, puede ahorrar la escritura del literal completo de búsqueda.

Inconvenientes:

  • Los usuarios se quedan sin la posibilidad de agregar la página de resultados a sus marcadores, volver mediante el botón del navegador a una consulta anterior, etc.
  • La página independiente de resultados de búsqueda nos ha quedado un poco desangelada.
  • Las actualizaciones dinámicas de contenido suponen un problema para algunos usuarios como los de lectores de pantalla.

Soluciones a los inconvenientes.

Pérdida de funcionalidad de la interfaz del navegador.

Este problema ha quedado sin resolver, aunque no afirmo que sea insalvable. Yo no conozco la solución.

Un usuario experimentado podría buscar la url de la petición AJAX e introducirla diréctamente en su navegador, o simplemente desactivar Javascript para obtener el comportamiento normal del formulario de búsqueda.

Página independiente de resultados.

Aunque esta página ha quedado bastante triste, se ha procurado que siga teniendo sentido por sí misma al sacarla del contexto para el que está diseñada (la caja de resultados dinámica.)

Para ello se han añadido varios textos ocultos al encabezado visible “Resultados de búsqueda”. Uno contiene los términos de búsqueda y otro el nombre del sitio en el que se ha realizado la búsqueda, de manera que si un usuario llegara a esta página sin haber pasado por el buscador, seguiría teniendo una referencia u orientación general sobre el contenido encontrado.

Por otra parte, se han seguido los principios del Javascript no intrusivo haciendo que los elementos que sólo tienen sentido con Javascript habilitado o que existen solamente para ejecutar una funcionalidad Javascript, no estén en el código HTML, sino que se generen también con Javascript. Para ello se ha reemplazado el enlace que aparece en la página de resultados a la página principal de este sitio, por el botón de cerrar que aparece en la caja de resultados.

Contenidos dinámicos VS lectores de pantalla.

Como comentaba en un post anterior, los usuarios de lectores de pantalla tienen dificultades para enterarse de las actualizaciones dinámicas de contenido mediante Javascript. En primer lugar no pueden apreciar visualmente los cambios, y en segundo lugar, los lectores de pantalla leen el contenido de la página de manera lineal, a partir de una “captura del DOM” (buffer virtual) que guardan al cargar la página.

Esto último supone, que mientras el contenido ha cambiado, el lector de pantalla sigue usando una versión no actualizada del DOM. En las últimas versiones del lector de pantalla JAWS, este problema se ha solucionado parcialmente refrescando el buffer virtual cada cierto tiempo para evitar que se use una versión desactualizada de la página. Aun así, la aparición o modificación de contenidos sigue resultando un problema, ya que, aunque el lector de pantalla actualice el buffer virtual, el usuario no tiene forma de saber automáticamente que el contenido ha cambiado o dónde se ha producido esa actualización de contenido.

Una de las medidas más efectivas para solucionar este problema, o al menos minimizarlo, consiste simplemente en llevar el foco a la capa en la que se generan los resultados de búsqueda, que por otra parte, y por razones de posicionamiento CSS, no aparece inmediátamente después del formulario de búsqueda, sino al final del documento. Para ello simplemente le hemos asignado un valor negativo (-1) al atributo tabindex, para que pueda recibir el foco mediante Javascript (elemento.focus();) pero no aparezca en el orden natural de tabulación de la página.

El atributo tabindex no valida en elementos que no sean campos de formulario o enlaces, por lo que se ha añadido mediante Javascript.

Con esto conseguimos que al desenfocar el campo de búsqueda (evento onblur), la capa con los datos actualizados reciba inmediátamente el foco y pueda ser leída a continuación.

WAI-ARIA para los más avanzados.

La solución de llevar el foco al elemento actualizado, resulta efectiva en Internet Explorer (6 y 7) usando JAWS y NVDA, pero para los navegadores que actualmente soportan WAI-ARIA (Firefox 2 y superiores y Opera), hemos añadido unos cuantos atributos que informan además, sobre la cantidad de contenido que se actualizará en un área dinámica, la prioridad con que el lector de pantalla debe anunciar la actualización o el papel que cumple el área actualizada en el documento (es un contenido independiente, complementario, navegación, etc.)

Para conocer una lista de las posibilidades de WAI-ARIA, recomiendo echarle un vistazo a los ejemplos de ARIA que publican en iCITA.

Después de varias combinaciones y pruebas con JAWS 9, NVDA y el plugin para Firefox, Firevox, he decidio usar las siguientes propiedades y atributos para la capa de los resultados:


'aria-live': 'assertive',
'aria-relevant': 'all',
'aria-atomic': 'true'

También tengo que comentar, que el lector de pantalla con el que he obtenido unos resultados más parecidos a los esperados, ha sido el lector gratuito NVDA.

Más información:

Archivado en Accesibilidad, Javascript

3 Comentarios

Doble uso del atributo ABBR en encabezados de tabla

7 de Diciembre 2008

Si queremos (deberíamos) hacer una tabla accesible, podemos hacer uso del atributo abbr de los encabezados de tabla (<TH>). Este atributo puede servir a dos propósitos complétamente distintos.

Abreviar contenidos largos en celdas

Muchas veces, se piensa que el uso de este atributo cumple la misma función que la etiqueta <abbr> de HTML para mostrar la forma extendidida de una abreviatura o abreviación, sin embargo, su uso en encabezados de tabla, aunque también puede cumplir este objetivo, está concebido justamente para el contrario. En la traducción de la especificación de HTML 4.01 de html.conclase.net, podemos encontrar el siguiente fragmento:

Este atributo debería usarse para proporcionar una forma abreviada del contenido de la celda; los agentes de usuario pueden representar esta forma abreviada en lugar del contenido de la celda cuando sea apropiado. Los nombres abreviados deberían ser cortos, ya que los agentes de usuario pueden representarlos repetidas veces. Por ejemplo, los sintetizadores de voz pueden representar los encabezados abreviados relacionados con una celda en particular antes de representar el contenido de esa celda.

En este ejemplo de código extraído de 456 Berea Street, podemos ver cómo se ha usado el atributo abbr para proporcionar una forma abreviada de cada encabezado:


<table summary="The number of employees and the foundation year of some imaginary companies.">
    <caption>Table 1: Company data</caption>
        <tr>
            <th abbr="Company">Company Name</th>
            <th abbr="Employees">Number of Employees</th>
            <th abbr="Founded">Foundation Year</th>
    </tr>

Expandir formas abreviadas en celdas

Otro caso en el que necesitaremos usarlo, es cuando el encabezado de tabla ya está abreviado. Un ejemplo podría ser el de los días de la semana abreviados mediate sus iniciales (L, M, X, J, V, S, D), en el que el uso del atributo abbr serviría para mostrar la forma extendida (Lunes, Martes, etc.)

En este ejemplo extraído de Dive Into Accessibility, podemos ver este otro uso del atributo abbr:


<tr>
    <th abbr="Sunday" align="center"><span class="calendar">Sun</span></th>
    <th abbr="Monday" align="center"><span class="calendar">Mon</span></th>
    <th abbr="Tuesday" align="center"><span class="calendar">Tue</span></th>
    <th abbr="Wednesday" align="center"><span class="calendar">Wed</span></th>
    [...]
</tr>

En mi opinión, raras veces necesitaremos usar este atributo, a no ser que tengamos un encabezado de tabla muy largo y su repetición continua pueda resultar una molestia.

Cuando lo usemos con el propósito contrario (mostrar una forma extendida), deberemos asegurarnos de que es realmente necesario y no estamos causando una molestia proporcionando una forma larga para un encabezado abreviado, si este ya resulta suficiéntemente claro por sí mismo.

Archivado en Accesibilidad, HTML, Marcado semántico

Comentar

Recordatorio: los estándares Web sirven para…

1 de Diciembre 2008

  • Garantizar el funcionamiento de las aplicaciones Web independientemente del dispositivo, sistema operativo o navegador con que se acceda a ellas.
  • Evitar el uso de tecnologías propietarias con la consecuente creación de múltiples versiones.
  • Garantizar la compatibilidad hacia adelante y favorecer la compatibilidad hacia atrás.

Todo esto tiene los siguiente beneficios:

  • Menor coste de mantenimiento (una sola versión)
  • Se mejora la accesibilidad favoreciendo el acceso universal.
  • Se llega a un mayor número de usuarios.

Parece que a estas alturas, después de que la mayoría hayamos aceptado y promovido el uso de estándares Web, se hace necesario recordar para qué y por qué surgieron, ya que cuando aparece en escena el navegador o móvil de moda, algunos no dudan en crear aplicaciones que funcionarán sólo en estos dispositivos y cuya clave para ser compatible con otros, dependía simplemente del uso de estándares.

Parece que no hemos aprendido nada y, como sucedió durante la guerra de navegadores, volvemos a cometer los mismos errores utilizando las extensiones no estándar que los fabricantes de navegadores, tanto los “buenos” como los que van un paso por detrás, se empeñan en seguir implementando.

Creando aplicaciones específicas para uno u otro navegador, o frameworks de desarrollo para el iPhone, estamos favoreciendo la creación de múltiples versiones y una nueva guerra de navegadores.

Es simple, ¿por qué hacerlo para uno pudiendo hacerlo para todos?

Archivado en Accesibilidad, Estándares Web, Navegadores

4 Comentarios

Encabezados ocultos: ¿una mejora de accesibilidad o un obstáculo?

17 de Noviembre 2008

He estado haciendo cambios en el tema actual de este blog y después de darle unas cuantas vueltas y probar yo misma a navegar algunas páginas y otras webs usando un lector de pantalla, he tomado la decisión drástica de cargarme la mayoría de los encabezados ocultos que estaba usando.

La razón: encabezados que me indiquen qué es el contenido principal, la navegación o el buscador, no me ofrecen ninguna mejora ni son realmente necesarios para acceder al contenido que me interesa.

Una de las pautas para la accesibilidad del contenido web nos dice que usemos encabezados para transmitir la estructura del documento.

Aunque es cierto que nuestro HTML no puede por sí mismo ofrecer información sobre la estructura del documento en cuanto a áreas o secciones de este como la navegación o el contenido principal, probablemente los desarrolladores hemos hecho una interpretación incorrecta de esta pauta, al utilizar encabezados ocultos para marcar estas secciones con la intención de ofrecer una mejora de accesibilidad para usuarios de lectores de pantalla.

El problema es que como desarrolladores, queremos que la estructura de nuestra página sea perféctamente presentada a usuarios de lectores de pantalla y olvidamos que muy probablemente, a estos usuarios les importe más bien poco esta estructura y, al igual que cualquier usuario, busquen con las mismas “prisas”, el contenido que les interesa saltando a través de encabezados o enlaces (de ahí que el texto de los enlaces deba tener sentido por sí mismo, fuera de contexto). Es entonces cuando encontrar un encabezado que me diga “Contenido” me ayuda más bien poco, cuando yo lo que estoy buscando es algo que me diga claramente “de qué va esto”. Es posible incluso que la información sobre el contenido que deberían aportar los encabezados, se pierda en favor de la información sobre la estructura de la página, y aquí es cuando en vez de una mejora hemos conseguido todo lo contrario.

Hemos utilizado encabezados ocultos para transmitir, no información sobre el contenido, sino metainformación sobre este, y esta es una labor que no debería corresponder a los encabezados HTML, sino a otras etiquetas o atributos concebidos precísamente para este fin.

La realidad es que HTML no dispone de esas etiquetas, que veremos (algún día) en HTML 5. Aunque habrá casos en los que siga siendo necesario el uso de encabezados ocultos, sobretodo cuando no estén contemplados en el diseño pero sean necesarios para entender el contenido al que preceden, en la mayoría de casos, el encabezado natural debería ser suficiente.

WAI-ARIA ofrece la posibilidad de marcar estas áreas del documento (document landmark roles) mediante distintos valores para el atributo role, como main para el contenido principal, article para una porción de contenido independiente o contentinfo para los típicos enlaces a política de privacidad, nota de copyright, etc. En un futuro, las ayudas técnicas podrán proporcionar atajos de teclado u otros mecanismos para acceder diréctamente a cada una de estas áreas, lo que hoy hacemos mediante anclas (skip links). La realidad es que a día de hoy, sin tener en cuenta el soporte nulo de WAI-ARIA por las versiones actuales de Internet Explorer (6 y 7), los lectores de pantalla más populares, como JAWS, NVDA o Window Eyes, no soportan esta característica. Sólo JAWS 10 Beta tiene soporte para document landmark roles. Agradecería que me corrijan si me estoy equivocando.

En cualquier caso, no perdemos nada por usar estos landmark roles en nuestro HTML. Algunas extensiones para Firefox, como Juicy Studio Accessibility Toolbar o la Firefox Accessibility Extension, ofrecen esta información cuando existe. Siendo un poco optimistas, podemos pensar que no son utilizadas solamente por desarrolladores web.

Archivado en Accesibilidad, HTML

Comentar

Representación visual de los enlaces

28 de Octubre 2008

Una pregunta frecuente: ¿cómo deben representarse los enlaces?, ¿en negrita, de distinto color, subrayados al hacer rollover…?

Si nos paramos a pensar, resulta evidente y sin embargo es algo en lo que frecuentemente no reparamos.

En esta captura de Times Online, es fácil distinguir los enlaces del resto del texto por su color.

Continúa en "Representación visual de los enlaces"

Archivado en Accesibilidad

Comentar

Vídeo accesible: añadiendo subtítulos a Flash vídeo con Timed Text

19 de Octubre 2008

Una de las pautas para la accesibilidad del contenido web es la de proporcionar textos equivalentes para contenidos multimedia, tanto subtítulos de diálogos como descripciones de otros hechos necesarios para comprender el contenido del vídeo (un timbre, un portazo, una entonación, etc.), además de descripciones sonoras si fuera necesario.

En este turorial nos explican cómo hacer vídeo accesible añadiendo subtítulos y descripciones sonoras. Además, el vídeo utilizado, es un buen ejemplo de descripción sonora. Este post se limita a explicar la técnica utilizada en el tutorial, aunque con una modificación en el método para añadir el vídeo.

Timed Text (TT) es un método para la adición de subtítulos sincronizados a contenidos multimedia escrito en formato XML, por lo que sólo necesitaremos un editor de texto para crear nuestro archivo con los subtítulos.

Existen varios programas que nos pueden facilitar esta tarea, sobretodo la de la sincronización. Dos de ellos gratuitos son: Subtitle Workshop y MagPie. Estos programas además, permiten crear archivos de subtítulos en otros formatos como QText para Quicktime o SAMI para Windows Media.

También necesitaremos un reproductor de vídeo flash preparado para mostrar subtítulos y descripciones sonoras. Desde la web del tutorial podemos descargar uno gratuito para usos no comerciales.

Por último sólo hay que pasar la ruta al archivo XML con los subtítulos como un parámetro flashvars.


<param name="flashvars" value="file=ruta_al_archivo.flv&captions=ruta_al_archivo.xml" />

En el ejemplo del tutorial se ha utilizado el javascript SWFObject para incluir el vídeo proporcionando un contenido alternativo (vídeo descargable en formato MP4) para los usuarios que no tengan Adobe Flash Player o tengan una versión inferior.

Yo no dispongo de la versión del vídeo en otros formatos así que, he incluido simplemente un link para descargar Adobe Flash Player dentro de la etiqueta <object> y otro para descargar el vídeo en formato MPG. Si el contenido de esta etiqueta fuera un banner, podríamos incluir dentro de ella una imagen en formato gif con el contenido alternativo para los usuarios que no tuvieran el reproductor de Flash.

Así es como queda el archivo XML con los subtítulos, utilizado en el ejemplo de este post:


<tt xml:lang="es">
  <head>
  </head>

  <body>
    <div xml:id="captions">
        <p begin="00:00:04" end="00:00:07">Después de probar el iPod <br />con pantalla panorámica</p>
        <p begin="00:00:12" end="00:00:14">Internet de verdad <br />a velocidad 3G</p>
        <p begin="00:00:18" end="00:00:20">y mapas creados con GPS</p>
        <p begin="00:00:22" end="00:00:23">serí­a fácil que olvidaras</p>
        <p begin="00:00:23" end="00:00:26">que también, es un teléfono increible.</p>
    </div>
  </body>

</tt>

He utilizado un anuncio por su duración, y le ha tocado al iPhone y Movistar:

Fuentes y más información:

Actualización:

Minutos después de escribir este post, encuentro una entrada publicada este mismo día en Bitelia que nos presenta un servicio en línea para convertir vídeos de Youtube a otros formatos, entre ellos MPG, MOV, MP4, 3GP o WMV. Teniendo en cuenta que Flash no puede ser visualizado desde cualquier dispositivo,  proporcionar otros formatos de archivo para nuestros vídeos será una buena forma de ofrecer contenido accesible.

Archivado en Accesibilidad, How to

1 Comentario

Iconos como enlaces: problemas y soluciones

2 de Octubre 2008

Los iconos como enlaces en páginas web pueden ofrecer algunas ventajas. Dependiendo de las características del icono y del perfil del usuario, pueden ser asociados rapidamente con la acción o elemento que representan, además de ayudar a aprovechar espacios en pantalla o concentrar en un área una serie de elementos relacionados entre sí para que puedan ser localizados visualmente con facilidad. Un ejemplo de esto último podriá ser un grupo de acciones relacionadas con el documento como “enviar por correo” o “imprimir”.

Sin embargo, a la hora de codificarlos intentando ofrecer una solución accesible para todo tipo de usuarios, presentan algún que otro problema.

Continúa en "Iconos como enlaces: problemas y soluciones"

Archivado en Accesibilidad, Usabilidad

3 Comentarios

Javascript y accesibilidad

15 de Agosto 2008

Para muchos de los que comenzamos en esto en la época de la revolución CSS, el boom del Zen Garden (en España) y la agonía de la maquetación con tablas, Javascript ha sido visto como algo sucio, molesto y que ponía en peligro la accesibilidad de las páginas.

No es de extrañar teniendo en cuenta que en aquella época veíamos que Javascript servía para que objetos de todo tipo persiguieran el cursor por la pantalla, nevara sobre las páginas, se deshabilitara el botón derecho del ratón, en la barra de estado del navegador apareciera un mensaje en movimiento y sobre todo, para lanzar popups sin nuestro consentimiento.

Continúa en "Javascript y accesibilidad"

Archivado en Accesibilidad, Javascript

1 Comentario

Diagnosticar problemas de accesibilidad utilizando una CSS de usuario

22 de Julio 2008

Hacía unos meses que me rondaba la cabeza la idea de crear una css para chequear problemas de accesibilidad. La idea surgió al ver esta sencilla técnica para poner un borde a todos los elementos de un html (a modo de debugging) en Snipplr utilizando un código tan simple como este:

Continúa en "Diagnosticar problemas de accesibilidad utilizando una CSS de usuario"

Archivado en Accesibilidad, Buenas ideas, CSS, How to

Comentar

 Página 1 de 3  1  2  3 »