SWFObject - JD and Co

SWFObject

J’ai été amené récemment à résoudre un soucis d’intégration de fichier Flash à l’intérieur d’une page HTML. Mine de rien, ce genre de manip pose de plus en plus de problèmes :

  • Selon le navigateur et sa version, les paramètres réagissent différemment
  • La balise utilisée en standard par Flash n’est pas du tout compatible XHTML
  • Un récent patch de sécurité d’Internet Explorer s’avère sacrément bloquant pour afficher correctement son animation Flash 🙁

On m’avait dans un premier temps conseillé d’utiliser un petit script Javascript qui s’appelle BackToTheHTML. Ce gentil script a été écrit pour contourner la limitation du patch IE (IE ActiveX Update). Il marche bien, mais a un petit souci : dans certains cas (en particulier sur des vieilles machines où le patch n’a pas été appliqué), il fait planter le navigateur 🙁

J’ai trouvé une solution qui a priori s’avère satisfaisante : ça s’appelle SWFObject. Il s’agit d’un objet Javascript qui se subsiste aux lignes d’insertion de son anim flash dans le fichier HTML. Outre le fait qu’il est capable de détecter et de contourner la limitation de l’IE ActiveX machinbidule, il a deux atouts majeurs à mon sens :

  • Il utilise une syntaxe qui le rend pleinement compatible avec les validateurs XHTML
  • Et surtout, il s’adapte au navigateur, en générant des lignes de codes variables suivant le contexte.

Et donc, a priori, youpi, youpi, ça marche bien ! Enfin jusqu’aux prochains soucis… Je ne vous donne pas d’exemple d’utilisation, j’ai repris tel quel l’exemple de base de la doc, il fonctionne bien…

PS : petit update, pour être sûr que le Flash fonctionne sur de vieilles installs (par ex un Windows XP sans client flash particulier), il faut déclarer le Flash comme étant en version ‘5’ (et bien sûr que le fichier .swf soit lui aussi de cette version !). Sinon, vous ne verrez apparaître qu’un texte à la place de l’anim, et pas une demande d’installation d’un client Flash plus récent.

1 réflexion au sujet de “SWFObject”

Laisser un commentaire