【问题标题】:If window.navigator.userAgent is deprecated, what should I use instead? [duplicate]如果不推荐使用 window.navigator.userAgent,我应该改用什么? [复制]
【发布时间】:2016-08-22 04:50:03
【问题描述】:

MDN documentation 表示 window.navigator.userAgent 已弃用,不应使用。如果我想收集用户浏览器和操作系统数据进行分析(不是特征检测),我应该使用什么来代替?

【问题讨论】:

    标签: javascript


    【解决方案1】:

    用户代理字符串变得毫无意义且极其不可靠。

    您不应使用用户代理字符串,而应使用特征检测。如果您需要使用功能 X,请测试 X 是否可用。

    但也直接回答你的问题,没有JS替代品。

    【讨论】:

      【解决方案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
      }
      

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-06-26
      • 2013-05-20
      • 2012-01-11
      • 1970-01-01
      • 1970-01-01
      • 2016-05-18
      • 2013-08-07
      • 1970-01-01
      相关资源
      最近更新 更多