如何使用JavaScript区分Chrome浏览器与Chromium浏览器?
Chrome浏览器拥有扩展程序替代安装方法,但Chromium浏览器没有。我开发的产品包含网页扩展程序与本地主机应用,因此需要在安装后为用户展示不同的指引说明。该指引会在默认浏览器中打开,需通过页面内脚本为不同浏览器生成不同内容。
我原本打算使用userAgent来区分Chrome与纯Chromium,但发现二者的userAgent和userAgentData似乎相同。请问是否有其他方法可以区分这两款浏览器?
二者的userAgent和userAgentData相同。
上述说法并不成立…… =/
可以通过以下几种可靠方式区分Chrome和纯Chromium:
调用Chrome专属API
Chrome提供chrome.runtime.getBrowserInfo()这类独有的API,纯Chromium不支持。尝试调用该API,能成功返回数据则为Chrome,抛出异常则为Chromium。示例代码:async function isChrome() { try { await chrome.runtime.getBrowserInfo(); return true; } catch (e) { return false; } }注:此方法需要在扩展上下文或允许访问
chromeAPI的环境中使用,普通网页需搭配其他方案。解析User-Agent字符串
多数情况下Chrome的UA会包含Google Chrome关键词,而纯Chromium仅显示Chromium。你之前提到二者UA相同,但实际场景中差异普遍存在,可通过正则匹配区分:function isChrome() { return /Google Chrome/.test(navigator.userAgent); } function isChromium() { return /Chromium/.test(navigator.userAgent) && !/Google Chrome/.test(navigator.userAgent); }检查userAgentData品牌标识
Chrome的navigator.userAgentData.brands中会包含Google Chrome条目,纯Chromium则只有Chromium。通过遍历品牌列表即可判断:function isChrome() { return navigator.userAgentData?.brands.some(item => item.brand === "Google Chrome"); }检测扩展商店相关特性
Chrome默认关联官方扩展商店,纯Chromium通常无默认商店或使用开源商店。可尝试检测chrome.webstore相关API的可用性,但此方法可能受浏览器配置影响,需结合其他方式验证。
建议同时使用多种方法交叉验证,避免因自定义编译的Chromium版本修改标识导致误判。
内容的提问来源于stack exchange,提问作者Paul Kamp

