【问题标题】:Detecting NPAPI support in Chrome using javascript使用 javascript 检测 Chrome 中的 NPAPI 支持
【发布时间】:2015-04-30 05:52:45
【问题描述】:

由于谷歌浏览器在 2015 年 9 月后不再支持 NPAPI。有什么办法吗 使用 JavaScript 检测 chrome 中的 NPAPI 支持,以便替代 内容将被加载或向用户显示警告消息以使用旧版本的 Chrome。

【问题讨论】:

  • 您永远不应向用户显示一条消息,告诉他们使用旧版本的浏览器,因为旧版本不会收到安全更新。
  • 我完全同意 smorgan 的观点,但是我们仍然需要能够检测为他们提供哪种替代技术。当然希望有一种方法来检测而不是版本嗅探......
  • 仅作记录:您可以在此处启用较新版本的 napi:chrome://flags/#enable-npapi
  • 这条评论现在也适用于 Microsoft Edge,因为它也不再支持 NPAPI。

标签: google-chrome npapi


【解决方案1】:

遇到由 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 以查找要检查的内容。

【讨论】:

    【解决方案2】:

    由于自动更新,Chrome 用户一般运行的是最新版本;一旦推出,您可能应该假设 Chrome 用户没有 NPAPI 支持,并为他们提供替代内容。

    【讨论】:

      【解决方案3】:

      没有用于检查 NPAPI 支持的 javascript api,但作为解决方法,我建议您检查 Chrome 的浏览器版本。

      如果 Chrome 版本比 NPAPI 支持 42 旧,则禁用。是的,从 42 和 45 之前的版本您可以使用 chrome://flags/#enable-npapi 但无法从 JS 中检查此标志

      现在我想这是非常实际的信息: https://www.chromium.org/developers/npapi-deprecation?pli=1

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-02-11
        • 2013-09-29
        • 2012-06-08
        • 2013-10-27
        • 2019-09-07
        • 1970-01-01
        • 2013-11-03
        • 1970-01-01
        相关资源
        最近更新 更多