如何检测已安装的 Chrome 版本?

IT技术 javascript google-chrome google-chrome-extension
2021-02-26 23:55:15

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

3个回答

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

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

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

我已经更新了原始答案,因此它不会在其他浏览器中引发异常,并且不会使用已弃用的功能。

您还可以minimum_chrome_version在清单中设置不允许旧版本的用户安装它。

我怎么把它变成一个int?需要做一个比较.. 例如if(Version < 9)
2021-04-21 23:55:15
实际上 parseInt(raw[2]) 是正确的,因为 match 返回位置 0 处的完整匹配字符串。
2021-04-21 23:55:15
你需要parseInt(raw[1])兄弟,数组从0开始。
2021-04-24 23:55:15
2021-05-13 23:55:15
为什么不使用(?:e|ium)代替(e|ium)现在你会得到一个额外的团体咳嗽持有eium
2021-05-19 23:55:15

这是一个基于@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]
    };
}

在返回的对象中的元素的命名是根据这个惯例,虽然你当然可以适应它是基于这个来代替。

替代的现代解决方案可以只是检查 navigator.userAgentData.brands

例如:

Boolean(navigator.userAgentData?.brands.find(({ brand, version }) => brand === 'Chromium' && parseFloat(version, 10) >= 93))
更新:边缘也是铬,但例如不支持 AVIF。所以你也可以搜索brand === 'Microsoft Edge'
2021-05-08 23:55:15