Google Chrome屏蔽了Java插件,直到您明确允许它运行。 https://www.google.com/support/chrome/bin/answer.py?answer=1247383&hl=en-US检测Google Chrome浏览器是否阻止Java插件
如何在JavaScript中检测Chrome是否阻止它?
Google Chrome屏蔽了Java插件,直到您明确允许它运行。 https://www.google.com/support/chrome/bin/answer.py?answer=1247383&hl=en-US检测Google Chrome浏览器是否阻止Java插件
如何在JavaScript中检测Chrome是否阻止它?
这不仅是Chrome的使用点击即可播放功能 - 火狐(Java的取得通过块列表点击播放),歌剧院(他们的Turbo模式让所有的插件都可以点击播放),还有一些附加组件可以阻止插件自动运行。
这些都不会让你知道插件是从内容脚本中点击播放的。所以理想情况下,您以更一般的方式解决问题。
不能安装插件之间的区别(见navigator.plugins
)以及其他情形或者
...并假设“未能加载或被阻止”基于此。 MDN上有这样一个best-practices page。
这种区分应该通常足够好,例如检查SoundCloud如何处理即插即用的点击播放。
答案编辑2013年3月15日,以提高信息的准确性
支持的插件的列表可作为navigator
对象的数组:
navigator.plugins
这个API是non-standard,但所有现代浏览器实现它。 IE浏览器的支持至少可以追溯到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');
检查'navigator.plugins'只会告诉你插件是否安装。它可能仍然无法加载,阻止或点击播放,并且无法通过内容可访问的API找到这些条件。 –
Chrome是否尊重'applet'元素的'alt'属性或替代HTML? –
我不知道。我没有使用'applet'标签,我使用'object'标签在页面上嵌入applet。 –
O..K。那么,当你尝试它时发生了什么? –