Comment puis-je utiliser javascript / jQuery / etc pour détecter si Flash est installé et si ce n'est pas le cas, afficher un div contenant des informations informant l'utilisateur qu'il doit installer Flash?
Comment puis-je utiliser javascript / jQuery / etc pour détecter si Flash est installé et si ce n'est pas le cas, afficher un div contenant des informations informant l'utilisateur qu'il doit installer Flash?
Réponses:
Utilisez swfobject. il remplace un div par le flash s'il est installé. voir: http://code.google.com/p/swfobject/
Si swfobject
cela ne suffit pas, ou si vous devez 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 mon Firefox 25 si le plugin flash est juste désactivé mais installé.
Le commentaire de @ invertedSpear dans cette réponse a fonctionné dans Firefox, mais pas dans aucune version d'IE.
Alors combiné 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;
}
}
jqplugin: http://code.google.com/p/jqplugin/
$.browser.flash == true
Vous devriez également pouvoir utiliser ..
swfobject.getFlashPlayerVersion().major === 0
avec le swfobject-Plugin .
swfobject
n'est pas défini.
J'ai utilisé le kit de détection d'Adobe, suggéré à 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 fait une alerte indiquant la version détectée de flash, qui n'est pas très conviviale. Tout à coup, une boîte apparaît avec des nombres apparemment aléatoires.
Quelques modifications que vous voudrez peut-être envisager:
Version très très réduite de http://www.featureblend.com/javascript-flash-detection-library.html (uniquement détection de flash booléen)
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
}