88

如何使用 javascript/jQuery/etc 检测是否安装了 Flash,如果未安装,则显示一个 div,其中包含通知用户他们需要安装 Flash 的信息?

4

8 回答 8

159

如果swfobject还不够,或者您需要创建一些更定制的东西,试试这个:

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

它适用于 7 和 8。

于 2010-07-26T15:28:20.880 回答
104

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

@invertedSpear 在该答案中的评论在 Firefox 中有效,但在任何 IE 版本中均无效。

所以结合了他们的代码并得到了这个。在 Google Chrome 31、Firefox 25、IE 8-10 中测试。感谢 Drewid 和倒置的Spear :)

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;
  }
}
于 2013-11-20T12:03:30.757 回答
26

使用 swf 对象。如果已安装,它将用 Flash 替换 div。见:http ://code.google.com/p/swfobject/

于 2009-06-15T20:40:12.677 回答
18

您可以使用 navigator.mimeTypes。

if (navigator.mimeTypes ["application/x-shockwave-flash"] == undefined)
    $("#someDiv").show ();
于 2009-06-15T20:44:19.597 回答
10

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

$.browser.flash == true
于 2012-06-27T21:42:13.167 回答
4

你也应该可以使用..

swfobject.getFlashPlayerVersion().major === 0

使用swfobject-Plugin

于 2014-04-05T20:39:47.720 回答
2

我使用了 Adob​​e 的检测工具包,最初由 justpassinby 建议。他们的系统很好,因为它会检测版本号并将其与您的“所需版本”进行比较

一件坏事是它会发出警报,显示检测到的闪存版本,这对用户不是很友好。突然一个盒子弹出了一些看似随机的数字。

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

  • 删除警报
  • 更改它,使其返回一个对象(或数组)---第一个元素是布尔值 true/false,表示“是否在用户机器上找到所需的版本”---第二个元素是在用户机器上找到的实际版本号
于 2011-03-29T14:54:33.163 回答
1

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

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  
        }
于 2015-10-07T11:10:51.617 回答