Firefox浏览器Flash启用状态检测及代码异常问题咨询
我来帮你搞定Firefox 59里Flash启用状态检测的问题,先说说你现有代码的问题,再给你靠谱的解决方案~
为啥你的代码不管用?
你代码里的ActiveXObject('ShockwaveFlash.ShockwaveFlash')是IE浏览器专属的API,Firefox从始至终都不支持这个,所以代码必然会进入catch分支。而后面判断navigator.mimeTypes['application/x-shockwave-flash']是否存在,只能说明浏览器安装了Flash插件,但完全不代表插件是启用状态——这就是为啥即使你禁用了Flash,hasFlash还是会变成true的核心原因。
针对Firefox的正确检测代码
要准确判断Flash是否启用,得检查插件的enabledPlugin属性,而不是只看插件是否存在。试试这段代码:
function checkFlashEnabled() { let flashEnabled = false; // 遍历浏览器所有已安装的插件 for (const plugin of navigator.plugins) { // 找到Shockwave Flash插件 if (plugin.name.indexOf('Shockwave Flash') !== -1) { // enabledPlugin不为null说明插件已启用 flashEnabled = plugin.enabledPlugin !== null; break; } } return flashEnabled; } // 调用示例 console.log(checkFlashEnabled());
这段代码在Firefox 59上是有效的:它会遍历所有插件找到Flash,然后通过enabledPlugin属性判断是否处于启用状态——如果插件被禁用,enabledPlugin会返回null。
手动检查Flash状态的方法
如果你想直观确认Flash的状态,也可以手动操作:
- 打开Firefox,在地址栏输入
about:addons按回车 - 切换到「插件」标签页
- 找到「Shockwave Flash」,查看它的状态选项(始终启用/请求时启用/从不启用)
内容的提问来源于stack exchange,提问作者NIsham Mahsin
相关产品推荐
相关产品推荐

