Google Chrome阻止Java插件,直到您明确允许它运行。 https://www.google.com/support/chrome/bin/answer.py?answer=1247383&hl=en-US
我如何在javascript中检测Chrome是否阻止它?
答案 0 :(得分:1)
不仅Chrome采用点击播放功能 - Firefox(Java通过阻止列表制作点击播放),Opera(他们的Turbo模式使所有插件点击播放),......还有用于防止插件自动运行的加载项/扩展。
这些都不允许您从内容脚本中找到有关点击播放的插件。理想情况下,您会以更一般的方式解决问题。
您可以通过
来区分未安装的插件(请参阅navigator.plugins
)和其他情况
...并假设“无法加载或被阻止”基于此。 MDN上有一个best-practices page。
这种区别通常应该足够好,例如,检查SoundCloud如何处理即点即用的插件。
答案 1 :(得分:-1)
回答编辑2013.03.15以提高信息的准确性
支持的插件列表在navigator
对象中以数组形式提供:
navigator.plugins
此API为non-standard,但所有现代浏览器都会实现它。 Internet Explorer支持至少可以追溯到IE7,但它在旧版本的Opera中不可用。
navigator.plugins
具有以下基本结构:
PluginArray [
...
Plugin {
description: "Java Plug-In 2 for NPAPI Browsers"
filename: "JavaAppletPlugin.plugin"
length: 17
name: "Java Plug-In 2 for NPAPI Browsers"
},
...
]
这是一个遍历navigator.plugins
的函数,并检查给定字符串的name
属性。如果找到,它会返回true
或false
。
function pluginEnabled(name) {
var plugins = navigator.plugins,
i = plugins.length,
regExp = new RegExp(name, 'i');
while (i--) {
if (regExp.test(plugins[i].name)) return true;
}
return false;
}
像这样使用它(不区分大小写):
pluginEnabled('java');
pluginEnabled('flash');