MDN documentation表示不推荐使用window.navigator.userAgent,不应使用它。如果我想收集用户浏览器和操作系统数据进行分析(而不是功能检测),我应该使用什么呢?
答案 0 :(得分:3)
用户代理字符串变得毫无意义且非常不可靠。
您不应使用用户代理字符串,而应使用功能检测。如果您需要使用功能X,请测试X是否可用。
但是为了直接回答你的问题,没有JS替代方案。
答案 1 :(得分:2)
基于检测用户代理字符串的浏览器识别是 不可靠且不推荐,因为用户代理字符串是用户 可配置的。
例如:
- 在Firefox中,您可以更改首选项 about.config中的general.useragent.override。一些Firefox扩展程序 那;但是,这只会更改发送的HTTP标头,并且 不会影响JavaScript代码执行的浏览器检测。
- Opera 6+允许用户通过设置浏览器标识字符串 菜单
- Microsoft Internet Explorer使用Windows注册表
- Safari和iCab允许用户更改浏览器用户代理 字符串到预定义的Internet Explorer或Netscape字符串通过 菜单。
我认为,他们正在尝试从JavaScript中删除完全此功能。
<强>更新强>
Object-Oriented JavaScript, 2nd Edition:最好不要依赖 在用户代理字符串上,但要使用功能嗅探(也称为 能力检测)。原因是它很难 跟踪所有浏览器及其不同版本。它太多了 更容易简单地检查您打算使用的功能是否确实如此 可在用户的浏览器中使用。例如看一下 以下代码:
if (typeof window.addEventListener === 'function') { // feature is supported, let's use it } else { // hmm, this feature is not supported, will have to // think of another way }