目录
1.问题背景
2.userAgent
3.解决
1.问题背景
开发了一个H5,是通过生成二维码,扫描这个二维码后就跳到这个H5,所以需要判断一下扫描的设备是否为手机,然后由于业务逻辑还需要判断一下手机是Android、iOS还是iPad。一般前端的做法是通过浏览器的userAgent来判断,某天有用户保障,说通过苹果手机扫描二维码后H5提示用户设备不是Android或者iPhone。
2.userAgent
简单说下userAgent包含了哪些信息。我们可以在浏览器的开发者工具输入window.navigator.userAgen 获取userAgent。比如:
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36'
- Mozilla/5.0: 这是一个历史遗留的标识,大多数现代浏览器仍然使用它作为userAgent的开头。
- (Macintosh; Intel Mac OS X 10_15_7):这段标识的是用户所使用的操作系统名称、版本号以及体系结构。
- AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36:这里包含了浏览器引擎及其版本号。
3.解决
推荐一个网站,打开这个网站就能获取到你手机浏览器的userAgent,当然用电脑打开也会获取到,但是电脑我们可以直接看开发者工具,手机H5是无法查看的,所以可以使用这个网站。
UserAgent分析和查询 浏览器UA分析 UA查看 iP138在线工具
通过用户的帮忙,发现用户的苹果手机的userAgent竟然为mac电脑的userAgent,what?难道是组装机? 最后,通过查阅资料,发现用户打开的safari浏览器的桌面模式,safari设置为桌面模式。
最后,让用户关掉这个桌面模式就可以正常请求H5了。