Jak mogę wykryć, czy Flash jest zainstalowany, a jeśli nie, wyświetl Ukryty div, który informuje użytkownika?

Jak mogę użyć javascript / jQuery / etc, aby wykryć, czy Flash jest zainstalowany, a jeśli nie, wyświetl div, który zawiera informacje informujące użytkownika, że musi zainstalować flash?

Author: KingNestor, 2009-06-16

8 answers

Użyj swfobject. zastępuje div Flashem, jeśli jest zainstalowany. zobacz: http://code.google.com/p/swfobject/

 26
Author: Josh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-01-21 00:12:52

Jeśli swfobject nie wystarczy, lub musisz stworzyć coś nieco bardziej szytego na miarę, spróbuj tego:

var hasFlash = false;
try {
    hasFlash = Boolean(new ActiveXObject('ShockwaveFlash.ShockwaveFlash'));
} catch(exception) {
    hasFlash = ('undefined' != typeof navigator.mimeTypes['application/x-shockwave-flash']);
}
Działa z 7 i 8.
 159
Author: Drewid,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-08-23 19:08:37

@Drewid odpowiedź nie działa w moim Firefoksie 25 Jeśli wtyczka flash jest po prostu wyłączona, ale zainstalowana.

@invertedSpear komentarz w tej odpowiedzi działał w Firefoksie, ale nie w żadnej wersji IE.

/ Align = "left" / Testowane w Google Chrome 31, Firefox 25, IE 8-10. Dzięki Drewid i 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;
  }
}
 103
Author: Vigneshwaran,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-11-20 12:03:30

Możesz użyć nawigatora.mimetypy.

if (navigator.mimeTypes ["application/x-shockwave-flash"] == undefined)
    $("#someDiv").show ();
 18
Author: albertein,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-06-15 20:44:19

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

$.browser.flash == true
 10
Author: mhenry1384,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-01-21 00:21:30

Powinieneś również być w stanie używać..

swfobject.getFlashPlayerVersion().major === 0

Z SWFObject-Plugin .

 4
Author: user3502163,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-07-23 10:03:47

Użyłem zestawu do wykrywania Adobe, pierwotnie sugerowanego przez justpassinby. Ich system jest ładny, ponieważ wykrywa numer wersji i porównuje go z "wymaganą wersją"

Jedną złą rzeczą jest to, że robi alert pokazujący wykrytą wersję Flasha, która nie jest zbyt przyjazna dla użytkownika. Nagle pojawia się pudełko z pozornie przypadkowymi liczbami.

Niektóre modyfikacje, które warto rozważyć:

  • Usuń alert
  • zmień go tak, aby wrócił obiekt (lub tablica) --- pierwszy element to wartość logiczna true / false Dla " czy wymagana wersja została znaleziona na komputerze użytkownika" --- drugi element to rzeczywisty numer wersji znaleziony na maszynie użytkownika
 2
Author: Mike,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-03-29 14:54:33

Bardzo bardzo minifikowana Wersja http://www.featureblend.com/javascript-flash-detection-library.html (tylko boolean flash detection)

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
Author: lucasgabmoreno,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-10-07 11:10:51