【问题标题】:How to detect the installed Chrome version?如何检测已安装的 Chrome 版本?
【发布时间】:2011-06-21 11:43:51
【问题描述】:

我正在开发一个 Chrome 扩展程序,我想知道有没有一种方法可以检测用户正在使用哪个版本的 Chrome?

【问题讨论】:

  • 你为什么想知道这个?而且,由于 Chrome 是开源的,您可以在构建之前将其更改为您想要的任何内容。
  • Chrome 9 上的 Google 搜索(非即时)在第一次查询时使用 AJAX。它破坏了我的扩展。

标签: javascript google-chrome google-chrome-extension


【解决方案1】:

以整数形式获取 Chrome 的主要版本:

function getChromeVersion () {     
    var raw = navigator.userAgent.match(/Chrom(e|ium)\/([0-9]+)\./);

    return raw ? parseInt(raw[2], 10) : false;
}

我已经更新了原始答案,这样它就不会在其他浏览器中抛出异常,也不会使用已弃用的功能。

你也可以在manifest中设置minimum_chrome_version不让旧版本的用户安装它。

【讨论】:

  • 如何将其设为 int?需要做一个比较..例如if(Version < 9)
  • 你需要parseInt(raw[1]) bro,数组从0开始。
  • 其实 parseInt(raw[2]) 是正确的,因为 match 在位置 0 返回完全匹配的字符串。
  • 为什么不使用(?:e|ium) 而不是(e|ium)。现在你会得到一个额外的组咳嗽,持有e 或ium。
【解决方案2】:

这是一个基于@serg 的回答的版本,它提取了版本号的所有元素:

function getChromeVersion () {
    var pieces = navigator.userAgent.match(/Chrom(?:e|ium)\/([0-9]+)\.([0-9]+)\.([0-9]+)\.([0-9]+)/);
    if (pieces == null || pieces.length != 5) {
        return undefined;
    }
    pieces = pieces.map(piece => parseInt(piece, 10));
    return {
        major: pieces[1],
        minor: pieces[2],
        build: pieces[3],
        patch: pieces[4]
    };
}

返回的对象中元素的命名基于this 约定,当然您也可以改为基于this。

【讨论】:

    【解决方案3】:

    替代现代解决方案只需查看navigator.userAgentData.brands

    例如:

    Boolean(navigator.userAgentData?.brands.find(({ brand, version }) => brand === 'Chromium' && parseFloat(version, 10) >= 93))
    

    【讨论】:

    • 更新:边缘也有铬,但不支持例如 AVIF。所以你也可以搜索brand === 'Microsoft Edge'
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-18
    相关资源
    最近更新 更多