Google Chrome 会阻止 Java 插件,直到您明确允许它运行。https://www.google.com/support/chrome/bin/answer.py?answer=1247383&hl=zh-CN
如果 Chrome 阻止它,我如何在 javascript 中检测?
Google Chrome 会阻止 Java 插件,直到您明确允许它运行。https://www.google.com/support/chrome/bin/answer.py?answer=1247383&hl=zh-CN
如果 Chrome 阻止它,我如何在 javascript 中检测?
不仅 Chrome 采用点击播放功能 - Firefox(Java 通过阻止列表点击播放),Opera(他们的 Turbo 模式使所有插件点击播放),......还有附加组件/防止插件自动运行的扩展。
这些都不允许您从内容脚本中发现插件是点击播放的。因此,理想情况下,您以更一般的方式解决问题。
您可以通过以下方式区分未安装的插件(请参阅 参考资料navigator.plugins
)和其他情况
...并据此假设“加载失败或被阻止”。MDN 上有一个最佳实践页面。
这种区别通常应该足够好,例如检查 SoundCloud 如何处理点击播放的插件。
答案编辑于 2013.03.15 以提高信息的准确性
支持的插件列表以navigator
对象中的数组形式提供:
navigator.plugins
这个 API 是非标准的,但所有现代浏览器都实现了它。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');