这样我通常会检测插件,例如Flash Player:
for (var el in navigator.plugins) {
if (navigator.plugins[el].name &&
navigator.plugins[el].name.toLowerCase().indexOf('shockwave') !== -1) {
console.log(navigator.plugins[el]);
}
}
我不是在寻找跨浏览器的解决方案,也不想测试它是否正确。测试此插件是否处于活动状态的方法是什么?
答案 0 :(得分:6)
其他两个解决方案都可以确定是否安装了插件并启用了。
目前无法确定插件是否已安装但已被禁用。 Navigator.plugins
不包含仍安装的已禁用插件。
答案 1 :(得分:1)
navigator.plugins
是一个数组,因此您在现代浏览器中使用for each
并使用索引进行迭代:
function pluginActive(pname) {
for (var i = 0;i < navigator.plugins.length;i++) {
if (navigator.plugins[i].name.indexOf(pname) != -1) {
return true;
}
}
return false;
}
console.log("Flash plugin " +
(pluginsActive("Shockwave Flash") ? "active" : "not present"));
您无法区分已禁用且不存在的插件。请记住,在插件激活/取消激活生效之前,您可能需要重新启动浏览器。
答案 2 :(得分:0)
如果相关插件已停用,它将不会显示在navigator.plugins
中或以其他方式暴露给该页面。