使用javascript在Chrome中检测NPAPI支持

时间:2015-02-27 13:37:33

标签: google-chrome npapi

由于谷歌Chrome在2015年9月之后放弃了对NPAPI的支持。有什么办法吗? 使用JavaScript检测chrome中的NPAPI支持,以便替代 将向用户加载或显示警告消息以使用较旧版本的Chrome。

3 个答案:

答案 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