SwfObject - 在没有“允许运行...”Firefox 消息的情况下检测闪存

Posted

技术标签:

【中文标题】SwfObject - 在没有“允许运行...”Firefox 消息的情况下检测闪存【英文标题】:SwfObject - Detect flash without the "Allow to run..." firefox message 【发布时间】:2014-10-29 22:19:48 【问题描述】:

我一直在我的一个项目中使用 swfobject,以检测最终用户是否安装了 Flash 版本。问题出在 Firefox,因为它显示消息:“允许运行 Adob​​e Flash?”这是我想要避免的。

这不是向最终用户显示替代内容,我想要的只是尝试检测 Flash,如果未安装 Flash,则不显示任何内容,但如果安装了 Flash,则不显示 Allow在 Firefox 中运行...消息。

有没有人知道任何方法可以防止 SwfObject 发生这种情况?

注意:只需在 html 标头中包含下一行即可:

<script type="text/javascript" src="swfobject.js"></script>

它触发允许运行消息:S

如果您认为 swfobject 有更好的替代品来解决这个问题,而且它是一个很好的多用途 swf 处理程序工具,我会全力以赴。

这是一个消息示例:

谢谢

【问题讨论】:

hasFlash=[].some.call(navigator.plugins, function(p)return p.name=="Shockwave Flash") @dandavis,你为什么不把它变成一个完整的答案?您的代码应该在什么情况下使用? 【参考方案1】:

类似:

var flashInstalled = ((typeof navigator.plugins != "undefined" && typeof navigator.plugins["Shockwave Flash"] == "object") || (window.ActiveXObject && (new ActiveXObject("ShockwaveFlash.ShockwaveFlash")) != false));

不确定您是否需要检查所有浏览器,还是只检查一些,所以您可以删除 activeX 检查......

【讨论】:

【参考方案2】:

navigator mimeType 代表一个插件对象。您可以使用它来循环并获取浏览器中启用的任何插件的详细信息。

示例:

调用navigator.mimeTypes 将返回一个插件对象数组。

仅供参考:如果用户禁用了某个插件,那么它将不会出现在此数组中..

最简单的逻辑是简单地在描述中搜索 shockwave

var plugins = navigator.mimeTypes;

var i;

    for(i = 0 ; i < plugins.length ; i++)

            var pluginName = plugins[i].description.toLowerCase()

            if(pluginName.indexOf('shockwave') > -1)

                console.log(pluginName + ' : flash in enabled')

                break;
            

    

将此脚本粘贴到任何控制台中。

希望对你有帮助

【讨论】:

以上是关于SwfObject - 在没有“允许运行...”Firefox 消息的情况下检测闪存的主要内容,如果未能解决你的问题,请参考以下文章

用 SWFObject 代替常规嵌入真的很重要吗?

swfobject的java等价物

我可以销毁使用 SWFObject 创建的 Flash 对象吗?

如何防止 Javascript 菜单隐藏在 Flash 视频 (SWFObject) 下

我需要 swfobject.js 的替代解决方案

如何在 swfobject.embedSWF 中使用 flashvars 属性?