由于谷歌Chrome在2015年9月之后放弃了对NPAPI的支持。有什么办法吗? 使用JavaScript检测chrome中的NPAPI支持,以便替代 将向用户加载或显示警告消息以使用较旧版本的Chrome。
答案 0 :(得分:8)
由于chrome 42禁用NPAPI而产生了问题。所做的事情就是这样的:(类似于)
function isJavaAvailable() {
var javaRegex = /(Java)(\(TM\)| Deployment)/,
plugins = navigator.plugins;
if (navigator && plugins) {
for (plugin in plugins){
if(plugins.hasOwnProperty(plugin) &&
javaRegex.exec(plugins[plugin].name)) {
return true;
}
}
}
return false;
}
var chromeVersion = window.navigator.userAgent.match(/Chrome\/(\d+)\./);
if (chromeVersion && chromeVersion[1]) {
if (parseInt(chromeVersion[1], 10) >= 42 && !isJavaAvailable()) {
// do chrome-no-java-related task
console.log('Java not available');
}
}
这不是直接的“NPAPI检测器”,但可以通过更改正则表达式来重写以测试受NPAPI禁用影响的插件。正则表达式用于某种强大。请查看navigator.plugins['some-number'].names
以查找要检查的内容。
答案 1 :(得分:3)
由于自动更新,Chrome用户通常会运行最新版本;一旦推出,您可能只是假设Chrome用户没有NPAPI支持,并为他们提供备用内容。
答案 2 :(得分:2)
没有javascript api可以检查NPAPI支持,但作为解决方法,我建议您检查Chrome的浏览器版本。
如果Chrome版本早于42,则禁用NPAPI支持。是的,从42版和45版之前你可以使用chrome://flags/#enable-npapi
但是没有办法从JS检查这个标志
现在我想这是非常实际的信息: https://www.chromium.org/developers/npapi-deprecation?pli=1