[Ovillo] Problemas con flash

Reynier Perez Mira rperezm en estudiantes.uci.cu
Dom Oct 1 22:24:12 UTC 2006


Busca en el historial de la lista, he visto muchos mensajes de Flash Accesible. Por ejemplo te pongo este mensaje que no he probado aun pero bueno debe funcionar: " Flash Válido (mejor que flash satay)"

David Gruni es un checo que propone este método [1] para insertar flash en documentos XHTML Strict válidos, usando comentarios condicionales para lograr la cross-browser-isidad.

El codigo final es asi:

|<!--[if !IE]> -->
<object type="application/x-shockwave-flash"
  data="movie.swf" width="300" height="135">
<!-- <![endif]-->

<!--[if IE]>
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
  codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0"
  width="300" height="135">
  <param name="movie" value="movie.swf" /> <!--><!---->
  <param name="loop" value="true" />
  <param name="menu" value="false" />

  <p>This is <strong>alternative</strong> content.</p> </object>
<!-- <![endif]-->|


Usa comentarios condicionales NEGADOS, en la primera parte, para que el código sea para todos menos para IE. Y a la inversa luego.
Además, propone una forma de lidiar con el problema de Eolas del IE, donde los flashes necesitan "activarse" para interactuar con ellos. Me imagino que esta solución ya la habrán propuesto otros también, pero es simple [2]:

|var objects = document.getElementsByTagName("object");

for (var i=0; i<objects.length; i++)
    objects[i].outerHTML = objects[i].outerHTML;|


Ese javascript en un archivo externo, llamado con "defer" (para que se ejecute luego de cargar el dom, pero sin esperar a que se cargue todo el contenido), de esta forma:

|<!--[if IE]>
<script type="text/javascript"
  src="fix_eolas.js"
  defer="defer"></script>
<![endif]-->|

También usando comentarios condicionales.

Por otro lado, yo tengo una clase [3] que permite emular scripts externos con "defer" sin necesidad de crear scripts externos.
Usando mi clase, podríamos englobar el código como una función
fix_eolas() y llamarlo de la siguiente forma:
EventMgr.add(window,"load",fix_eolas);

De esta forma tendríamos un método para incluir flashes standard y con el workaround de eolas sin necesidad de usar mas archivo (ni js - como en el método que se propone antes, ni swf - como en flash satay).
Creo que hemos arribado al ideal para insertar flash!


[1] http://www.dgx.cz/trine/item/how-to-correctly-insert-a-flash-into-xhtml
[2] http://www.dgx.cz/trine/item/how-to-avoid-activation-of-active-x-in-ie
[3]
http://iconoclastismo.blogspot.com/2006/09/clase-para-manejar-eventos-en.html

Salu2
--
ReynierPM | 5to Ing. Informática


Más información sobre la lista de distribución Ovillo