it-swarm.com.de

Wie kann ich erkennen, ob Flash installiert ist, und wenn nicht, eine versteckte div anzeigen, die den Benutzer informiert?

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?

88
KingNestor

Verwenden Sie swfobject. Es ersetzt ein Div durch das Flash, wenn es installiert ist. Siehe: http://code.google.com/p/swfobject/

26
Josh

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.

160
Drewid

@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;
  }
}
104
Vigneshwaran

Sie können navigator.mimeTypes verwenden.

if (navigator.mimeTypes ["application/x-shockwave-flash"] == undefined)
    $("#someDiv").show ();
18
albertein

jqplugin: http://code.google.com/p/jqplugin/

$.browser.flash == true
10
mhenry1384

Sie sollten auch in der Lage sein zu verwenden ..

swfobject.getFlashPlayerVersion().major === 0

mit dem swfobject-Plugin .

4
user3502163

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:

  • entfernen Sie die Warnung
  • ändern Sie es so, dass es ein Objekt (oder ein Array) zurückgibt. --- Das erste Element ist ein boolesches true/false für "Wurde die erforderliche Version auf dem Computer des Benutzers gefunden". --- Das zweite Element ist die tatsächliche Versionsnummer, die auf dem Computer des Benutzers gefunden wurde
2
Mike

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  
        }
1
lucasgabmoreno