Par |ben|, jeudi 4 août 2005 à 13:48 :: Web Développement :: #44 :: rss
Detection du plugin flash dans le navigateur internet (javascript + css) et alternative
Lorsque vous utilisez une animation flash sur votre site, vous ne pouvez pas être sur a 100% que tous les internautes pourront la voir. Contre ça, Macromedia propose ses propres solutions, cependant elles ne me convenaient pas.
Donc après quelques recherches sur le net j'ai trouvé ce site : http://blog.deconcept.com/ qui propose une solution utilisant du javascript et des css (div, display:block et display:none) qui donne un bon résultat (exemple) mais avec encore des choses pompeuses (à mon goût
)
Alors après encore plusieurs heures de recherches et du bidouillage avec divers bouts de code (et oui je ne suis pas codeur pour un sous
) j'ai réussi à obtenir un résultat qui me convenait mieux, c'est à dire :
- détection du Flash Player dans le navigateur
- dans la page web 2 "div" l'une contenant l'animation flash, l'autre une alternative a cette animation (avec : texte, image, etc...)
- si player flash détecté, alors la div de l'animation est en :block et l'autre en :none
- si player flash pas détecté, alors on a le resultat inverse c-a-d : la div de l'animation est en :none et l'autre en :block avec donc en remplacement : une image fixe, ou gif animé, ou un message disant qu'un plug-in est requis (et on donne le lien par exemple
)
Mon code est le suivant : flash-detect.htm
le javascrpit
<script type="text/javascript">
<!--
//fonctions pour les display block ou none
function player(){
document.getElementById('yes').style.display="block";
document.getElementById('no').style.display="none";
}
function less(){
document.getElementById('yes').style.display="none";
document.getElementById('no').style.display="block";
}// detection du player flash
var contentVersion = 6;
var plugin = (navigator.mimeTypes && navigator.mimeTypes["application/x-shockwave-flash"]) ? navigator.mimeTypes["application/x-shockwave-flash"].enabledPlugin : 0;
if ( plugin ) {
var words = navigator.plugins["Shockwave Flash"].description.split(" ");
for (var i = 0; i < words.length; ++i)
{
if (isNaN(parseInt(words[i])))
continue;
var PluginVersion = words[i];
}
var FlashCanPlay = PluginVersion >= contentVersion;
}
else if (navigator.userAgent && navigator.userAgent.indexOf("MSIE")>=0
&& (navigator.appVersion.indexOf("Win") != -1)) {
document.write('<SCR' + 'IPT LANGUAGE=VBScript\> \n'); //FS hide this from IE4.5 Mac by splitting the tag
document.write('on error resume next \n');
document.write('FlashCanPlay = ( IsObject(CreateObject("ShockwaveFlash.ShockwaveFlash." & contentVersion)))\n');
document.write('</SCR' + 'IPT\> \n');
}// resultat player flash ok
if ( FlashCanPlay ) {
window.onload=player;
}
// resultat pas de player flash
else{
window.onload=less;
}
//-->
</script>
l'xhtml
<div id="yes" style="display:block; color:red;">Flash Player Detected</div>
<div id="no" style="display:block; color:red;">No Flash Player Detected</div>
je reste ouvert a tous commentaires sur le code du javascript car il y a certainement moyen d'optimiser, mais je n'en suis pas du tout capable
!
Article suivant de la même catégorie >> Bookmarklets, de petits scripts en...
Commentaires
1. Le vendredi 19 août 2005 à 12:12, par Ben
2. Le samedi 29 octobre 2005 à 08:25, par fred
Ajouter un commentaire
Les commentaires pour ce billet sont fermés.