如何检测Flash是否安装,如果没有,显示一个隐藏的div通知用户?

我如何使用JavaScript / jQuery /等检测是否安装了Flash,如果不是,显示一个包含信息通知用户,他们需要安装闪存的股利?

使用swfobject。 如果安装了闪存,它会用闪存代替一个div。 请参阅: http : //code.google.com/p/swfobject/

如果swfobject不足够,或者你需要创build一个更定制的东西,试试这个:

 var hasFlash = false; try { hasFlash = Boolean(new ActiveXObject('ShockwaveFlash.ShockwaveFlash')); } catch(exception) { hasFlash = ('undefined' != typeof navigator.mimeTypes['application/x-shockwave-flash']); } 

它适用于7和8。

@Drewid的答案在Firefox 25中不起作用,如果Flash插件只是被禁用,但安装。

@ invertedSpear的评论,在Firefox的工作,但不是在任何IE版本。

所以结合他们的代码和得到这个。 testing谷歌Chrome 31,Firefox 25,IE 8-10。 谢谢Drewid和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; } } 

你可以使用navigator.mimeTypes。

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

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

 $.browser.flash == true 

你也应该可以使用..

 swfobject.getFlashPlayerVersion().major === 0 

与swfobject插件 。

我使用了Adobe的检测工具,最初由justpassinby提出。 他们的系统很好,因为它检测到版本号,并将其与您的“所需版本”进行比较

不好的一点是它会提示显示检测到的闪存版本,这不是非常用户友好的。 突然间,一个盒子突然冒出一些看似随机的数字。

您可能要考虑的一些修改:

  • 删除警报
  • 改变它,所以它返回一个对象(或数组)—第一个元素是布尔真正/假为“是在用户的机器上find所需的版本”—第二个元素是在用户的机器上find的实际版本号

http://www.featureblend.com/javascript-flash-detection-library.html (只有布尔闪存检测)非常非常缩小版本

 var isFlashInstalled = (function(){ var b=new function(){var n=this;nc=!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};nb=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&&(nc=!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||(nc=!0)}}()}; return bc; })(); if(isFlashInstalled){ // Do something with flash }else{ // Don't use flash }