找回密码
 新建账号

Microsoft Edge Google Chrome User-Agent string 0.0.0 了怎么办?

[复制链接]
php 发表于 2022/6/14 15:05 | 显示全部楼层 |阅读模式
Microsoft Edge, Google Chromium, Google Chrome 版本号格式是 MAJOR.MINOR.BUILD.PATCH,随着版本升级,version numbers MAJOR.MINOR.BUILD.PATCH 中的 MINOR.BUILD.PATCH 变成了 0.0.0,navigator.userAgent Javascript API 和 User-Agent HTTP header 都会将 MINOR BUILD PATCH 部分全部变成0,实际上只能知道 MAJOR 部分。要想得到真实的完整 MAJOR.MINOR.BUILD.PATCH 版本号,需要更新代码,使用新的 Javascript API.

比如 Google Chrome 102.0.5005.115 的 User Agent string 是 Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Safari/537.36,从 User Agent string 只能看出是 Google Chrome 102。

Google Chromium 及其派生产品 Google Chrome, Microsoft Edge 使用 User-Agent Client Hints API 可以查看浏览器信息。
  1. navigator.userAgentData
复制代码
  1. navigator.userAgentData.brands
复制代码
以上 navigator.userAgentData.brands 可以查看当前浏览器的品牌,通常会有三个品牌。
Not A;Brand -- 99
Chromium -- 102
Google Chrome -- 102 <Google Chrome>
Microsoft Edge -- 102 <Microsoft Edge>
不过这样得到的版本号还是只有 MAJOR version,要想得到完整的版本号,就需要使用 navigator.userAgentData.getHighEntropyValues() 方法了。代码如下。
  1. <script>
  2.         /**
  3.          * get full version numbers for Google Chrome and Microsoft Edge
  4.          * @author wuxiancheng.cn
  5.          */
  6.         navigator.userAgentData.getHighEntropyValues(['fullVersionList']).then(function(UserAgentDetails){
  7.                 let version = '0.0.0.0';
  8.                 let isChrome = isEdge = false;
  9.                 for(let i=0, l=UserAgentDetails.fullVersionList.length; i<l; i++){
  10.                         if('Microsoft Edge' === UserAgentDetails.fullVersionList[i].brand){
  11.                                 isEdge = true;
  12.                                 version = UserAgentDetails.fullVersionList[i].version;
  13.                                 break;
  14.                         }else if('Google Chrome' === UserAgentDetails.fullVersionList[i].brand){
  15.                                 isChrome = true;
  16.                                 version = UserAgentDetails.fullVersionList[i].version;
  17.                                 break;
  18.                         }
  19.                 }
  20.                 console.log(isChrome, isEdge, version);
  21.         });
  22. </script>
复制代码
将 navigator.userAgentData.getHighEntropyValues 参数中的 fullVersionList 改为 uaFullVersion 在以上代码中可以直接使用 UserAgentDetails.uaFullVersion 获取 full version numbers,不过官方已经不建议这样做,后续版本可能失效,甚至抛出错误。
navigator.userAgentData.getHighEntropyValues() 只在 Google Chromium 90+ 及以 Google Chromium 为内核的其他浏览器(Google Chrome. Microsoft Edge etc)中才能使用,在 Firefox 中无法使用,在使用前需要先检测浏览器支持,否则浏览器会抛出错误。

手机版|轻松E站

GMT+8, 2024/4/25 04:25

快速回复 返回顶部 返回列表