Ir directamente al contenido de esta página

codexexempla.org

Técnicas de accesibilidad: el JavaScript no obstrusivo. La teoría de la mejora progresiva

Tabla de contenidos

  1. JavaScript y accesibilidad
  2. La mejora progresiva

JavaScript y accesibilidad

Como en las técnicas relacionadas con el marcado y las relacionadas con la presentación del documento, listo las técnicas de accesibilidad y luego las pautas que se satisfacen con ellas.

Visto esto, si quisiéramos extraer una regla de oro a la hora de emplear JavaScript, sería «no confíes en JavaScript». Y la forma de trabajar sería tener como objetivo el desarrollo de un script no obstrusivo, que es aquel cuya ausencia no impide que el contenido de una página o su funcionalidad básica desaparezcan.

El término «JavaScript no obstrusivo» es una traducción errónea; el nombre con el que se bautizó en inglés —creo recordar que fue Stuart Langridge quien lo hizo—, unobtrusive JavaScript, literalmente significaría ‘JavaScript no molesto’, donde obtrusive sería un falso amigo.

Un script como el de Snap Shots que plaga cientos de blogs ciertamente me molesta, pero no me impide acceder al contenido de los mismos, mientras que la carga activa de un contenido esencial por medio de Ajax sí obstruiría mi acceso a la información si no hubiese alguna alternativa disponible. Lo «molesto» sería una cuestión de usabilidad, la «obstrucción», una de accesibilidad.

Así, yo suelo emplear la «mala» traducción, porque me parece que hace más énfasis en el problema potencial que supone JavaScript.

¿Cómo lograr que un script sea no obstrusivo? Pues aplicando una metodología conocida como la mejora progresiva.

La mejora progresiva

La mejora progresiva —del inglés progressive enhancement— es una teoría y una metodología a la vez. La idea es que se debe partir de un documento cuyo contenido y funcionalidad básica no dependa más que del mínimo común a todo agente de usuario, como son la capacidad de presentar texto, la hipervinculación y la interacción a través de formularios. Una vez logrado esto, se procede a añadir sucesivas capas que vayan mejorando la experiencia del usuario.

Esto es exactamente lo que hacemos —o deberíamos hacer— con CSS: primero nos aseguramos de que el documento tiene sentido sin la hoja de estilo, y luego procedemos a crear ésta.

Así, los pasos de esta metodología aplicada a JavaScript serían:

  1. Imaginamos que JavaScript no existe, y que sólo contamos con HTML y con la funcionalidad del servidor.
  2. Creamos el sitio de manera que cualquier contenido y que el objetivo básico del mismo —obtener una información concreta, navegar por un catálogo, hacer una compra, apuntarse a un evento…— puede lograrlo cualquier usuario.
  3. Sin tocar el marcado más que para vincular a los documentos un archivo .js, nos ponemos a añadir todo lo que pensemos que puede ser útil para el visitante.

Si se consigue esto, estamos de enhorabuena.

Obviamente, éste es un modelo ideal, pero como todos, sirve de guía. Y ahora vamos a seguirlo para poner un ejemplo sencillo pero que lo ilustre.

Supongamos que se nos encarga una página en la que se muestren varias miniaturas con las portadas de unos libros, y que al hacer clic sobre ellas se debe actualizar la imagen de la ampliación y la información sobre la obra.

Ahora supongamos que somos un entusiasta de Ajax y queremos demostrar que este planteamiento de desarrollo web no tiene secretos para nosotros. No quedaría algo como este primer ejemplo, donde desde nuestro script actualizamos la ampliación y cargamos de forma asíncrona los datos.

Todo parece salir a la perfección, pero si desactivamos JavaScript, perdemos totalmente la información que no sea la que se ofrece inicialmente, así que tenemos que replantearnos el funcionamiento de la página.

Así, creamos otra que funciona sin necesidad de JavaScript, aunque obviamente necesita recibir respuesta del servidor para actualizar el contenido. Y por último, dejamos la misma página, pero le vinculamos nuestro .js, que replica el comportamiento de la primera versión. Ahora el contenido está disponible con o sin JavaScript.

Relacionada con la metodología de la mejora progresiva está la de la graceful degradation —algo así como ‘degradado elegante’—, que es el enfoque inverso: crear la página con el máximo de prestaciones y luego hacer añadidos con los que proporcionar funcionalidad equivalente para los agentes de usuario menos capaces.

Desde mi punto de vista, este segundo enfoque es como levantar un edificio inseguro y después llenarlo de redes de seguridad. No obstante, para tener una buena comparativa de ambas metodologías, recomiendo leer Graceful Degradation & Progressive Enhancement de Tommy Olsson (inglés).

Y en este punto es donde termina el curso, y desde donde se puede empezar a estudiar de verdad. Para ello, sólo puedo recomendar la bibliografía que proporciono.

Buena suerte.

Notas

  1. No obstante, si la funcionalidad que ofrece este objeto es crítica, esta debería proporcionarse de manera alternativa, ya que —de momento— Flash transmite información a las tecnologías asistivas a través de MSAA (inglés), es decir, que las características de accesibilidad no estarán disponibles para todos los sistemas operativos. Volver

Contacto

En virtud de la Ley Orgánica 15/1999 de Protección de Datos de Carácter Personal le informo de que los datos que proporcione no serán empleados para otro fin que el de responder a su mensaje. En especial, me comprometo a no cederlos a terceros ni a emplearlos para enviar información no solicitada.

Del blog de Digital Icon