【问题标题】:Detect Internet explorer browser version problems检测 Internet Explorer 浏览器版本问题
【发布时间】:2012-11-29 23:20:51
【问题描述】:

我的 MVC3 应用程序中有 Getaway 的布局:

@if ((Request.Browser.Browser == "IE") && ((Request.Browser.MajorVersion == 7)))
{
//show some content
}
else
{
//show another content 
}

我有很多用户抱怨(使用 Internet Explorer 8 的用户)。他们从我的应用程序中看到 Internet Explorer 7 内容。 我检测 Internet Explorer 7 版本的方式有什么问题? 如何在我的应用程序中 100% 确定用户拥有 Internet Explorer 7 版本? 这可能是特定的操作系统问题吗?

【问题讨论】:

  • 您的 Internet Explorer 8 用户是否在兼容性视图中连接?

标签: asp.net asp.net-mvc-3


【解决方案1】:

问题是 HttpBrowserCapabilities aka Request.Browser 类从请求中解析 userAgent 标头,其中包含有关客户端(在您的情况下是浏览器)的信息,这可能并不总是 100% 可靠,因为用户代理很容易可变的。

如果您知道 MajorVersion 正在返回什么值并且它足够一致,您可以对其进行修复。或者,您可以尝试检查低于 IE8 的浏览器(但不是 100%),例如

@if ((Request.Browser.Browser == "IE") && ((Request.Browser.MajorVersion < 8)))
{
    //show IE7 content
}
else
{
    //show IE8+ content 
}

【讨论】:

  • 嗨。谢谢你的答复。我已经更改为 Request.Browser.MajorVersion
  • 您可以解析出操作系统版本,如果是 Windows XP,请将您的检查更改为 Request.Browser.MajorVersion &lt; 7 IE7 否则 Request.Browser.MajorVersion == 7
  • 操作系统版本?这是网络应用程序...有可能吗?
  • @user1086344 是的,操作系统版本通常作为用户代理的一部分发送,例如Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0) - 在这种情况下,浏览器是 IE9,操作系统是 Windows 7 (or Windows Server 2008)。对于 XP,您将寻找 NT 5.X
  • 非常感谢。这可以帮助
【解决方案2】:

版本号需要特定于 IE。

 if (Request.Browser.Browser == "IE" && Request.Browser.Version == "7.0") 
        { 
          //Show IE 7 content
        }
 else
  {
     // Show other than IE7 content
  }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-25
    • 2013-07-11
    • 2012-07-24
    • 1970-01-01
    • 2016-03-21
    • 1970-01-01
    相关资源
    最近更新 更多