Weblog

Añadiendo Flash de manera accesible

Método obsoleto en detrimento de este otro. Lo dejo aquí para mantener un archivo de cómo ha ido el tema.

El por qué

Hace poco estaba haciendo una web que tenía que ser accesible, pero que a la vez tenía un menú en flash. Como yo el flash nunca lo he usado hasta ahora empecé a investigar un poco y descubrí que casi todo el mundo pasa de dar contenidos alternativos al flash y lo peor de todo, inserta sus películas dentro de etiquetas object usando javascript para detectar la versión del plugin. Eso representa un grave problema de accesibilidad, puesto que los usuarios que no tengan javascript activado no podrán insertar la película y además no podrán leer el contenido alternativo (si lo hay).

Método Flash satay

Investigando un poco más recordé que había leido un artículo en A List Apart sobre cómo hacer que el flash se inserte de manera accesible. Básicamente el método es bueno porque no usa más que las etiquetas object y además puede definir un contenido alternativo dentro del object (un enlace, una imagen, un menú con listas, lo que sea).

Ejemplo con película de MX
contenido alternativo a la película de MX
Código del método Flash satay

<object type="application/x-shockwave-flash" data="index.swf" 
width="400" height="100">
	contenido alternativo a la película de MX
	<param name="movie" value="index.swf" />
</object>

Houston tenemos un problema!

Tras probar el método en mi ordenador, sorpresa! no funciona! El contenido alternativo no se muestra en mi navegador sin plugin... Para hacerlo corto, despúes de darle muchas vueltas descubro que mi FireFox tiene el plugin de flash 5 (cuando yo creía que no tenía ninguno). Como la película que estaba probando era MX, el plugin 5 no sabía entenderla, pero ya había cargado el object, por lo que tampoco leía el contenido alternativo.

Método Flash satay mejorado por lanzadera

La posible solución (debería tener más resultados de usuarios con diferentes configuraciones) es crear una pelicula en flash 4 a modo de lanzadera. En el frame 1 se ejecuta el actionscript siguiente:


vs = Number(substring(eval("$version"), 5, 1));
if(vs<6) loadMovie("flash4.swf",_root);
else loadMovie("index.swf",_root);

De este modo si el navegador tiene el plugin inferior a 6 (Flash MX) cargará una pelicula en flash 4, que si que entiende. Si tiene el plugin adecuado podrá leer los contenidos mejorados con una pelicula de MX. El único problema es si el navegador tiene un plugin inferior al 4, porque estaremos en el mismo caso del Flash satay, donde intentará cargar la lanzadera pero no la entenderá y por tanto no mostrará ni siquiera los contenidos alternativos. Afortunadamente ya queda poca gente en ese caso, pero sí que queda mucha gente con el plugin del 4 o 5.

Ejemplo con lanzadera
contenido alternativo a la lanzadera
Código del método Flash satay con lanzadera
<object type="application/x-shockwave-flash" data="lanza.swf" 
width="400" height="100">
	contenido alternativo a la lanzadera
	<param name="movie" value="lanza.swf" />
</object>	

Escrito en julio de 2004. He creido oportuno actualizar la lista de mini artículos usando material más o menos reciente

Comentarios sobre esta entrada

  1. 2004-11-02 19:14:58

    You know, you could use JS to insert the Flash if the correct version is detected then the noscript tag acts as the alternate content if JS is disabled. If they have JS and no Flash (or the wrong version) you can still serve up the alternate content in the noscript tag using the DOM (at least I think you can).

Cerrado

Debido a la mierda de spam este weblog queda cerrado a comentarios, era imposible mantener el script de la lista negra al día. Si quieres busca mi email y enviame un mensaje. Lo siento.

Cambia las preferencias

Cambia las preferencias

Licencia

Creative Commons 2001-2004. Sergi Meseguer

Sindicación RSS

rss (1, 2 ), xhtml, css, taw