Mise à jour du 18/06/2007 : le problème soulevé dans ce billet existe aussi pour les vidéos quelconques car Internet Explorer traite ces objets comme des ActiveX au lieu d'objets multimedia[1].

La constatation est simple : le code Html classique pour insérer une vidéo Flash dans une page web ne fonctionne pas sur Internet Explorer. Aussi Adobe préconise l'utilisation du code suivant :

<object
  classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"
  codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0"
  width="550" height="400">
  ...
  <param name="movie" value="movie.swf" />
  <param name="quality" value="high" />
  ...
  <embed src="movie.swf" quality="high" bgcolor="#ffffff" width="550" height="400"
    type="application/x-shockwave-flash"
    pluginspage="http://www.macromedia.com/go/getflashplayer">
  </embed>
</object>

Mais, comme indiqué dans l'article How to correctly insert a Flash into XHTML il y a dans ce code de gros problèmes :

  1. les attributs classid et codebase n'existent pas dans les standards du web
  2. l'éléments embed n'existe pas non plus

Bref ces recommandations sont plutôt du registre de l'amateurisme... C'est pourquoi des professionnels du web se sont penchés sur la question et différentes solutions ont été trouvées, dont certaines à base de Javascript. Il est néanmoins possible de se passer de Javascript[2] en utilisant le code suivant issu de l'article cité plus haut :

<!--[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]-->

L'astuce est d'utiliser des commentaires conditionnels, encore une lubie de Microsoft pour une fois utile mais... qui sert uniquement à adresser les écarts de comportement de ce navigateur ![3] Ces commentaires servent à utiliser la bonne balise object pour les navigateurs conformes aux standards, et la mauvaise pour Internet Explorer : vous comprenez maintenant le titre de ce billet.

Moralité : vive Firefox !

Notes

[1] auquel cas il suffit de fournir le type MIME du fichier dans les attributs de la balise OBJECT

[2] ce que je fais dans ce blog

[3] comme quoi ils ont dû se rendre compte des problèmes posés par leur production.