Ir directamente al contenido de esta página
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.
Para desencadenar los comportamientos, emplear manejadores de eventos
Un ejemplo del primer tipo —también denominados eventos lógicos— sería onfocus
, cuando es aplicable, puesto que acemos referencia a un estado de un elemento de la página, no al modo de acceder a él. Otro podría ser onselect
.
Para el segundo caso, sería, por ejemplo, complementar un onmousedown
con un onkeydown
, o un onmouseup
con un onkeyup
.
A pesar de lo que indica el documento de técnicas de HTML del W3C (inglés), onclick
pertenecería al primer tipo, ya que los navegadores actuales interpretan este evento como la activación de un botón o un vínculo, no como el resultade de hacer clic con el ratón. Además, onkeypress
no sería un equivalente muy correcto, porque onclick
dispara un evento una vez, pero onkeypress
continúa lanzándolo repetidamente vez hasta que se deja de pulsar la tecla.
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 —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:
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.