【发布时间】:2016-08-22 04:50:03
【问题描述】:
MDN documentation 表示 window.navigator.userAgent 已弃用,不应使用。如果我想收集用户浏览器和操作系统数据进行分析(不是特征检测),我应该使用什么来代替?
【问题讨论】:
标签: javascript
MDN documentation 表示 window.navigator.userAgent 已弃用,不应使用。如果我想收集用户浏览器和操作系统数据进行分析(不是特征检测),我应该使用什么来代替?
【问题讨论】:
标签: javascript
用户代理字符串变得毫无意义且极其不可靠。
您不应使用用户代理字符串,而应使用特征检测。如果您需要使用功能 X,请测试 X 是否可用。
但也直接回答你的问题,没有JS替代品。
【讨论】:
基于检测用户代理字符串的浏览器识别是 不可靠且不推荐,因为用户代理字符串是用户 可配置。
例如:
- 在 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 }
【讨论】: