SwfObject - 在没有“允许运行...”Firefox 消息的情况下检测闪存
Posted
技术标签:
【中文标题】SwfObject - 在没有“允许运行...”Firefox 消息的情况下检测闪存【英文标题】:SwfObject - Detect flash without the "Allow to run..." firefox message 【发布时间】:2014-10-29 22:19:48 【问题描述】:我一直在我的一个项目中使用 swfobject,以检测最终用户是否安装了 Flash 版本。问题出在 Firefox,因为它显示消息:“允许运行 Adobe 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 创建的 Flash 对象吗?