Cuando necesitamos incrustar un control de Flash dentro de nuestras páginas HTML, nos vemos obligados a hacerlo de dos formas diferentes.

La primera usando la marca <OBJECT> para embeder el ActiveX de Flash en Internet Explorer bajo Windows, y la segunda utilizando la etiqueta <EMBED> para cargar el plugin de Flash en formato compatible Netscape para el resto de plataformas (Firefox, Opera, …).

Aunque no es nada intuitivo, es posible hacer esto mismo en un solo paso. Es decir escribir una etiqueta que cargue un Flash, tanto en IE, como en el resto, WORA 100%.

La forma tradicional para hacerlo, que es incluso la que genera el propio Flash al publicar un HTML, tiene este estilo:

<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="375" height="130">
<param name="movie" value="images/04/07/flash_version.swf">
<embed src="images/04/07/flash_version.swf" pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash" type="application/x-shockwave-flash" width="375" height="130"></embed>
</object>

Y su resultado:

La manera todo en uno, sería así:

<object type="application/x-shockwave-flash" data="images/04/07/flash_version.swf" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0" width="375" height="130">
<param name="movie" value="images/04/07/flash_version.swf">
</object>

Con un idéntico resultado:

La explicación es que HTML 4.01 define OBJECT como el estándar, por lo que todos los navegadores alternativos lo implementan, mientras que la variación de OBJECT sigue estando sólo soportada por Microsoft.

No recuerdo de dónde saqué el código original, pero lo único que hay que tener en cuenta, es que tanto el atributo data del object, como el valor de parámetro movie sean idénticos.