Activation du flash sous Internet Explorer
Par Guillaume Hautbois, vendredi 25 août 2006 à 14:45 :: Javascript :: #5 :: rss
Il y a peu, Microsoft à publié un patch correctif qui a ajouté un nouveau problème pour les développeur vis à vis de Internet Explorer.
En effet, lors de la visualisation de flash, on nous oblige maintenant à cliquer une première fois sur l'animation pour l'activer. Cela a été mis en place pour éviter l'utilisation d'un swf sur un autre domaine que celui d'origine mais cette modification a surtout posé des problèmes à tout le monde...
Voici donc 2 méthodes au choix qui permettent de régler ce problème grâce au javascript, vous pouvez suivre cela dans le labo et bien évidemment sous Internet Explorer 6 avec le patch.
- La première méthode est artisanale, je l'ai découverte dans cet article mais je l'ai optimisée car celle-ci ne respectait pas les standards, afin d'utiliser la méthode flash satay que vous pouvez voir dans cet article-ci..
Elle consiste à appeler une fonction javascript en html pour afficher le flash :<script type="text/javascript"> displayFlash("bouton.swf", 200, 50, "Contenu alternatif"); </script>
Et en javascript, à ajouter un paramètre et a simplement afficher le flash :function displayFlash(swf, hauteur, largeur, alternatif) { document.write('<object type="application/x-shockwave-flash" data="'+swf+'" width="'+hauteur+'" height="'+largeur+'">'); document.write('<param name="allowScriptAccess" value="sameDomain" />'); document.write('<param name="movie" value="'+swf+'" />'); document.write(alternatif); document.write('</object>'); }
- La deuxième méthode consiste à utiliser un objet qui est fourni par adobe et que vous pouvez trouver sur cette page Cette méthode est plus complète, permet d'ajouter des paramètres, etc... mais on remarquera notamment un retard lors de l'affichage.
-
EDIT : Une troisième méthode que j'ai trouvé sur le site de mon ami Nosegrind, assez simple, toujours en javascript, mais qui fera quand même fonctionner le flash si le javascript est désactivé, donc a priori une bonne méthode. Elle est a activer a la fin du chargement de tous les flash de la page :
theObjects = document.getElementsByTagName("object"); for (var i = 0; i < theObjects.length; i++) { theObjects[i].outerHTML = theObjects[i].outerHTML; }
Au final, ces deux méthodes fonctionnent parfaitement, c'est à vous de choisir, personnellement, j'opterais pour la méthode artisanale (comme toujours ^^).
Commentaires
1. Le jeudi 14 septembre 2006 à 17:41, par matthlass
2. Le mardi 26 septembre 2006 à 15:57, par molecule
3. Le lundi 2 octobre 2006 à 12:12, par Sol@rweb
Ajouter un commentaire
Les commentaires pour ce billet sont fermés.