4

Google Chrome 会阻止 Java 插件,直到您明确允许它运行。https://www.google.com/support/chrome/bin/answer.py?answer=1247383&hl=zh-CN

如果 Chrome 阻止它,我如何在 javascript 中检测?

4

2 回答 2

1

不仅 Chrome 采用点击播放功能 - Firefox(Java 通过阻止列表点击播放),Opera(他们的 Turbo 模式使所有插件点击播放),......还有附加组件/防止插件自动运行的扩展。

这些都不允许您从内容脚本中发现插件是点击播放的。因此,理想情况下,您以更一般的方式解决问题。

您可以通过以下方式区分未安装的插件(请参阅 参考资料navigator.plugins)和其他情况

  • 定期测试它的可脚本性或
  • 加载时将插件调用到页面脚本中

...并据此假设“加载失败或被阻止”。MDN 上有一个最佳实践页面

这种区别通常应该足够好,例如检查 SoundCloud 如何处理点击播放的插件。

于 2013-04-08T08:28:53.230 回答
-1

答案编辑于 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给定字符串的属性的函数。它返回truefalse如果找到。

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');
于 2011-12-20T09:32:40.917 回答