Comment puis-je utiliser javascript/jQuery/etc pour détecter si Flash est installé et si ce n'est pas le cas, afficher une div contenant des informations informant l'utilisateur qu'il doit installer Flash?
Utilisez swfobject. il remplace une div par le flash s'il est installé. voir: http://code.google.com/p/swfobject/
Si swfobject
ne suffira pas, ou si vous avez besoin de créer quelque chose d'un peu plus sur mesure, essayez ceci:
var hasFlash = false;
try {
hasFlash = Boolean(new ActiveXObject('ShockwaveFlash.ShockwaveFlash'));
} catch(exception) {
hasFlash = ('undefined' != typeof navigator.mimeTypes['application/x-shockwave-flash']);
}
Cela fonctionne avec 7 et 8.
La réponse de @ Drewid ne fonctionnait pas dans Firefox 25 si le plugin flash était simplement désactivé mais installé.
Le commentaire de @ invertedSpear dans cette réponse a fonctionné dans Firefox mais dans aucune version IE version.
Donc, combiné à la fois leur code et obtenu ceci. Testé dans Google Chrome 31, Firefox 25, IE 8-10. Merci, Drewid et invertedSpear :))
var hasFlash = false;
try {
var fo = new ActiveXObject('ShockwaveFlash.ShockwaveFlash');
if (fo) {
hasFlash = true;
}
} catch (e) {
if (navigator.mimeTypes
&& navigator.mimeTypes['application/x-shockwave-flash'] != undefined
&& navigator.mimeTypes['application/x-shockwave-flash'].enabledPlugin) {
hasFlash = true;
}
}
Vous pouvez utiliser navigator.mimeTypes.
if (navigator.mimeTypes ["application/x-shockwave-flash"] == undefined)
$("#someDiv").show ();
jqplugin: http://code.google.com/p/jqplugin/
$.browser.flash == true
Vous devriez aussi pouvoir utiliser ..
swfobject.getFlashPlayerVersion().major === 0
avec le swfobject-Plugin .
J'ai utilisé le kit de détection d'Adobe, proposé à l'origine par justpassinby. Leur système est agréable car il détecte le numéro de version et le compare pour vous à votre "version requise"
Une mauvaise chose est qu’il envoie une alerte indiquant la version détectée du flash, qui n’est pas très conviviale. Tout à coup, une boîte apparaît avec des chiffres apparemment aléatoires.
Quelques modifications à prendre en compte:
Version très très précise de http://www.featureblend.com/javascript-flash-detection-library.html (uniquement la détection flash booléenne)
var isFlashInstalled = (function(){
var b=new function(){var n=this;n.c=!1;var a="ShockwaveFlash.ShockwaveFlash",r=[{name:a+".7",version:function(n){return e(n)}},{name:a+".6",version:function(n){var a="6,0,21";try{n.AllowScriptAccess="always",a=e(n)}catch(r){}return a}},{name:a,version:function(n){return e(n)}}],e=function(n){var a=-1;try{a=n.GetVariable("$version")}catch(r){}return a},i=function(n){var a=-1;try{a=new ActiveXObject(n)}catch(r){a={activeXError:!0}}return a};n.b=function(){if(navigator.plugins&&navigator.plugins.length>0){var a="application/x-shockwave-flash",e=navigator.mimeTypes;e&&e[a]&&e[a].enabledPlugin&&e[a].enabledPlugin.description&&(n.c=!0)}else if(-1==navigator.appVersion.indexOf("Mac")&&window.execScript)for(var t=-1,c=0;c<r.length&&-1==t;c++){var o=i(r[c].name);o.activeXError||(n.c=!0)}}()};
return b.c;
})();
if(isFlashInstalled){
// Do something with flash
}else{
// Don't use flash
}