【问题标题】:Browser name, version value returns "Netscape"浏览器名称,版本值返回“Netscape”
【发布时间】:2013-10-30 16:20:47
【问题描述】:

使用一些简单的 JavaScript,我得到了似乎为我的两段相似代码之一返回的错误值。对于browserName,无论我在哪个浏览器上测试代码,我都将 Netscape 作为返回的值。但是,browserVer 似乎返回了正确的值,如下所示,使用 Google Chrome。

browserVer 结果:

5.0 (Macintosh; Intel Mac OS X 10_8_5) AppleWebKit/536.30.1 (KHTML, like Gecko) 版本/6.0.5 Safari/536.30.1

这是为什么?

    var browserName = navigator.appName;
    var browserVer = navigator.appVersion;

【问题讨论】:

    标签: javascript


    【解决方案1】:

    快速搜索一下 navigator.appName 的实际含义会返回 this MDN page,其中包括以下事实:

    出于兼容性原因,HTML5 规范还允许任何浏览器在此处返回“Netscape”。

    相反,您可能应该使用像 Modernizr 这样的浏览器嗅探库

    【讨论】:

    • 是的,在更改搜索的措辞后,我发现了同样的事情。感谢您的分享:Modernizr。
    【解决方案2】:

    更好的搜索揭示了答案 (Why does JavaScript navigator.appName return Netscape for Safari, Firefox and Chrome?)

    ”MDN 说:“这最初是 DOM Level 0 的一部分,但后来被包含在 HTML5 规范中。” 请参阅此处的 Mozilla 文档。 顺便提一句;这就是为什么这不能用于浏览器检测(可能仅用于 IE)。浏览器检测是一种不好的做法,您应该尽可能避免使用它。改为进行特征检测。但是,如果有人坚持这一点;他们应该改用 userAgent 属性。”

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-06-14
      • 1970-01-01
      • 1970-01-01
      • 2011-01-22
      • 2011-10-06
      • 2014-01-15
      • 1970-01-01
      • 2014-04-11
      相关资源
      最近更新 更多