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

IT技术 javascript jquery asp.net-mvc flash detection
2021-02-07 21:48:20

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

6个回答

如果swfobject还不够,或者您需要创建一些更定制的东西,请尝试以下操作:

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

它适用于 7 和 8。

赞成使用 5 行 JavaScript 而不是使用整个库
2021-03-14 21:48:20
这不适用于 IE7,因为您没有测试 activexobject 部分
2021-03-15 21:48:20
这适用于 android 移动浏览器,如 firefox 和 chrome 吗?
2021-03-28 21:48:20
不得不将其修改为: var hasFlash = false; 尝试 { var fo = (navigator.mimeTypes && navigator.mimeTypes['application/x-shockwave-flash']) ?navigator.mimeTypes['application/x-shockwave-flash'].enabledPlugin : 0; if(fo) hasFlash = true; }catch(e){ if(navigator.mimeTypes ['application/x-shockwave-flash'] != undefined) hasFlash = true; }"
2021-03-30 21:48:20
如果您只想检测它是否已安装并且不一定以任何一种方式显示 swf,这会很好用。
2021-04-01 21:48:20

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

@invertedSpear 在该答案中的评论适用于 Firefox,但不适用于任何 IE 版本。

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

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;
  }
}
如果允许插件,则它不起作用,但我们正在检查的网站明确阻止了 Flash。Safari 8.0.8。在这种情况下 hasFlash 仍然为真(应该为假)。
2021-03-12 21:48:20
又短又甜
2021-03-16 21:48:20
可靠的答案。感谢救生员:)
2021-03-21 21:48:20
非常好。谢谢 !
2021-03-26 21:48:20
适用于 Firefox 39 (2015-08-03)。
2021-03-31 21:48:20

使用 swfobject。如果已安装,它会用flash灯替换 div。请参阅:http : //code.google.com/p/swfobject/

您可以使用 navigator.mimeTypes。

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

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

$.browser.flash == true