我们使用jQuery的jMedia插件来检测浏览器中是否启用了Flash。 (我们有一些资源只能在Flash中使用,而有些资源具有Flash和非Flash版本。)
https://github.com/malsup/media/tree/master
http://jquery.malsup.com/media/
我们这样使用它:
jmedia插件定义了一个变量_jm,我们可以在其上调用各种函数。
在Chrome中,执行以下操作:
_jm.detectPluginVersion("flash")
如果未启用Flash,将返回“未定义”,如果已启用,则将以字符串形式返回版本。
但是,在Firefox中,即使Flash被阻止,上述代码仍会返回版本。当我们使用此测试来查看是否启用了Flash时,这给我们带来了问题;如果没有启用Flash,则可以启动非Flash替代方案(如果有的话)。因此,在Firefox中,我们就像在启用Flash一样进行操作,但实际上并未启用。这意味着该资源将无法使用。
是否有更好的方法来测试Flash是否已启用,并且可以跨浏览器运行?
编辑:进一步研究这个问题,问题似乎不仅限于jmedia。我可以用navigator
看到同一件事:
chrome,禁用闪光灯:
navigator.plugins["Shockwave Flash"]
=> undefined
firefox,禁用闪光灯:
navigator.plugins["Shockwave Flash"]
=> Plugin { 0: MimeType, 1: MimeType, description: "Shockwave Flash 32.0 r0", filename: "libflashplayer.so", version: "32.0.0.101", name: "Shockwave Flash", length: 2, … }