如果不推荐使用window.navigator.userAgent,我应该使用什么呢?

时间:2016-04-27 17:58:14

标签: javascript

MDN documentation表示不推荐使用window.navigator.userAgent,不应使用它。如果我想收集用户浏览器和操作系统数据进行分析(而不是功能检测),我应该使用什么呢?

2 个答案:

答案 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字符串通过   菜单。

Source

我认为,他们正在尝试从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
}