js获取浏览器名称版本号,操作系统os,cpu,设备型号,userAgent解析UAParser,最佳实践

Web开发,经常需要判断浏览器的兼容性,浏览器程序名称和版本、iOS操作系统版本号,那么快速判断浏览器的运行环境

经常遇到的问题:
  • 获取系统类型,是不是安卓、是不是iOS、是否Mac、是否Windows
  • 检测chrome浏览器版本、内核是什么
  • 获取系统名称,iOS版本是否大于v12.0
  • 探测微信浏览器、版本号
  • 是不是UC、QQ浏览器、2345浏览器、华为浏览器
  • 解析userAgent 判断兼容性、检查浏览器内核/渲染引擎
  • 在线检测浏览器信息: 版本号/操作系统/内核/CPU架构/设备型号等信息(本网页右下角有小齿轮,点击可以查看详细信息)

WebRTC开发的时候,还遇到过问题:chrome 无法解码H264视频,H264编码的画面变成了黑屏画面。这时候的兼容性判断就需要做的更复杂。(后来是切换到华为浏览器v14才解决画面黑屏)

下面介绍获取浏览器appName、OS版本号的最佳实践

不再使用原始的 navigator.userAgent 解析了,直接用开源库 ua-parser-js ,开源js库用户量大,测试用例覆盖更全,更推荐使用开源库

ua-parser-js 快速获取浏览器名称版本号,操作系统os,cpu,设备型号,userAgent解析UAParser

ua-parser-js 用户量更大 开发者更多,建议用这个
文档doc https://github.com/faisalman/ua-parser-js/tree/1.0.35#documentation
快速获取浏览器、系统信息,集成 ua-parser-js
<script src="https://registry.npmmirror.com/ua-parser-js/1.0.35/files/dist/ua-parser.min.js"></script>
<script>
  console.log(UAParser());
</script>

当前浏览器 UAParser()结果

ua-parser-js UAParser() 结果示例






Windows chrome UA 字符串

  {
    "ua": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36",
    "browser": {
      "name": "Chrome",
      "version": "122.0.0.0",
      "major": "122"
    },
    "engine": {
      "name": "Blink",
      "version": "122.0.0.0"
    },
    "os": {
      "name": "Windows",
      "version": "10"
    },
    "device": {},
    "cpu": {
      "architecture": "amd64"
    }
  }

Android Chrome UA 字符串

  {
    "ua": "Mozilla/5.0 (Linux; Android 8.0.0; SM-G955U Build/R16NW) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Mobile Safari/537.36",
    "browser": {
      "name": "Chrome",
      "version": "116.0.0.0",
      "major": "116"
    },
    "engine": {
      "name": "Blink",
      "version": "116.0.0.0"
    },
    "os": {
      "name": "Android",
      "version": "8.0.0"
    },
    "device": {
      "vendor": "Samsung",
      "model": "SM-G955U",
      "type": "mobile"
    },
    "cpu": {}
  }

iPhone/iOS Safari UA 字符串

  {
    "ua": "Mozilla/5.0 (iPhone; CPU iPhone OS 16_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.6 Mobile/15E148 Safari/604.1",
    "browser": {
      "name": "Mobile Safari",
      "version": "16.6",
      "major": "16"
    },
    "engine": {
      "name": "WebKit",
      "version": "605.1.15"
    },
    "os": {
      "name": "iOS",
      "version": "16.6"
    },
    "device": {
      "vendor": "Apple",
      "model": "iPhone",
      "type": "mobile"
    },
    "cpu": {}
  }

除了ua-parser-js,还有bowser.js 也能快速获取浏览器、系统名称+版本号

bowser.js Demo示例

获取浏览器UA信息 bowser.js demo示例