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?
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?
Antworten:
Verwenden Sie swfobject. Es ersetzt ein Div durch den Flash, wenn es installiert ist. Siehe: http://code.google.com/p/swfobject/
Wenn dies swfobject
nicht ausreicht oder Sie etwas maßgeschneiderteres 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, aber in keiner IE-Version.
Also kombinierte beide ihren Code und bekam 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;
}
}
jqplugin: http://code.google.com/p/jqplugin/
$.browser.flash == true
Sie sollten auch in der Lage sein, ..
swfobject.getFlashPlayerVersion().major === 0
mit dem swfobject-Plugin .
swfobject
ist nicht definiert.
Ich habe das Erkennungskit von Adobe verwendet, das ursprünglich von justpassinby vorgeschlagen wurde. Ihr System ist nett, weil es die Versionsnummer erkennt und sie für Sie mit Ihrer 'erforderlichen Version' vergleicht.
Eine schlechte Sache ist, dass es eine Warnung ausgibt, die die erkannte Version von Flash anzeigt, was nicht sehr benutzerfreundlich ist. Plötzlich erscheint eine Box mit scheinbar zufälligen Zahlen.
Einige Änderungen, die Sie möglicherweise berücksichtigen möchten:
Sehr sehr minimierte Version von http://www.featureblend.com/javascript-flash-detection-library.html (nur boolesche Blitzerkennung )
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
}