【问题标题】:Why does IE 8 navigator.userAgent return MSIE 7.0?为什么 IE 8 navigator.userAgent 返回 MSIE 7.0?
【发布时间】:2011-12-08 03:35:27
【问题描述】:

我正在尝试在我的网页上实现浏览器支持功能。对于 Firefox 3.6,它运行良好,但由于某种原因 IE 8 的 userAgent 返回了错误的值。

这是一个场景,当我在 IE8 上运行“本地”javascript 代码时,navigator.userAgent 返回正确的信息 (MSIE 8.0)。但是当我在服务器上运行此脚本时,它会在 IE 8 浏览器上返回 MSIE 7.0。

有什么想法吗?

【问题讨论】:

  • 如果你在嗅探用户代理,你就做错了,你会遇到很多这样的问题。您应该使用特征检测,但您也可以为 ie7 和 ie8 设置条件 cmets 并更改一些 css 以查看发生了什么。
  • 使用特征检测而不是浏览器嗅探会更健壮,那里有很多库,试试this Google search
  • 服务器是在本地网络上还是在互联网上? IE8默认伪装成IE7when browsing intranet sites

标签: javascript html internet-explorer-8 user-agent navigator


【解决方案1】:

你也需要检查三叉戟令牌。

三叉戟令牌

当使用 F12 开发者工具更改 Internet Explorer 的浏览器模式时,用户代理字符串的版本标记被修改为出现,使浏览器看起来是较早的版本。这样做是为了允许将特定于浏览器的内容提供给 Internet Explorer,并且通常仅在网站尚未更新以反映浏览器的当前版本时才需要。

发生这种情况时,会在用户代理字符串中添加一个 Trident 令牌。此令牌包含一个版本号,使您能够识别浏览器的版本,而不管当前浏览器模式如何。

更多:http://msdn.microsoft.com/en-us/library/ms537503.aspx

【讨论】:

    【解决方案2】:

    您确定不是在 IE7 模式下运行吗?您可以在开发人员设置中的某处更改它(我认为是 F12)。

    【讨论】:

    • 你的意思是“兼容模式”。是的,这很可能,因为在 javascript 中,使用 Douglas Crockfords 的库,您可以检测到它,但在服务器上您没有机会。
    【解决方案3】:

    微软提供了这个页面:

    http://msdn.microsoft.com/en-us/library/ms537509(v=vs.85).aspx

    根据 Javascript 示例,人们会认为 IE8 会返回 8,而不是 7。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-11-30
      • 2011-09-03
      • 1970-01-01
      • 1970-01-01
      • 2022-08-24
      • 2021-12-21
      • 2012-04-20
      • 2020-03-19
      相关资源
      最近更新 更多