Wie kann ich mithilfe von Javascript/jQuery/etc feststellen, ob Flash installiert ist, und wenn dies nicht der Fall ist, ein Div anzeigen, das Informationen enthält, die den Benutzer darüber informieren, dass er Flash installieren muss?
Verwenden Sie swfobject. Es ersetzt ein Div durch das Flash, wenn es installiert ist. Siehe: http://code.google.com/p/swfobject/
Wenn swfobject
nicht ausreicht oder Sie etwas mehr Maßgeschneidertes erstellen müssen, versuchen Sie Folgendes:
var hasFlash = false;
try {
hasFlash = Boolean(new ActiveXObject('ShockwaveFlash.ShockwaveFlash'));
} catch(exception) {
hasFlash = ('undefined' != typeof navigator.mimeTypes['application/x-shockwave-flash']);
}
Es funktioniert mit 7 und 8.
@Drewids Antwort hat in meinem Firefox 25 nicht funktioniert, wenn das Flash-Plugin nur deaktiviert, aber installiert ist.
Der Kommentar von @ invertedSpear in dieser Antwort funktionierte in Firefox, jedoch in keiner IE Version.
Also kombinierten sie ihren Code und bekamen diesen. Getestet in Google Chrome 31, Firefox 25, IE 8-10. Danke Drewid und 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;
}
}
Sie können navigator.mimeTypes verwenden.
if (navigator.mimeTypes ["application/x-shockwave-flash"] == undefined)
$("#someDiv").show ();
jqplugin: http://code.google.com/p/jqplugin/
$.browser.flash == true
Sie sollten auch in der Lage sein zu verwenden ..
swfobject.getFlashPlayerVersion().major === 0
mit dem swfobject-Plugin .
Ich habe das Erkennungskit von Adobe verwendet, das ursprünglich von justpassinby vorgeschlagen wurde. Ihr System ist schön, weil es die Versionsnummer erkennt und sie für Sie mit Ihrer 'erforderlichen Version' vergleicht.
Eine schlechte Sache ist, dass ein Alarm ausgegeben wird, der die erkannte Flash-Version anzeigt, was nicht sehr benutzerfreundlich ist. Plötzlich taucht eine Kiste mit scheinbar zufälligen Zahlen auf.
Einige Änderungen, die Sie in Betracht ziehen könnten:
Sehr sehr kleine Version von http://www.featureblend.com/javascript-flash-detection-library.html (nur boolesche Flash-Erkennung)
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
}