【问题标题】:Request.Browser.Version returns 7 for IE on Surface Pro?Request.Browser.Version 在 Surface Pro 上为 IE 返回 7?
【发布时间】:2013-07-05 20:20:09
【问题描述】:

我正在开发一个 MVC 应用程序。

如果我(在我的 Surface Pro 上)转到http://www.whatbrowser.org/,它会正确显示 IE 10。

但如果我转到我的 MVC 应用程序并打印出 Request.Browser.Version,它会返回 7。

知道为什么吗? Request.Browser.Version 是否损坏?

谢谢

【问题讨论】:

  • 关于浏览器检测的一切都被破坏了=/。
  • 据我了解,IE11 甚至不会再注册为 IE。
  • 使用功能检测,而不是浏览器版本检测。你真的不应该关心客户端是否使用 IE 版本 24。你应该关心的是这个特定的浏览器是否支持你试图在你的网站上实现的功能。
  • @Darin,是的,但是 jquery 2.x 不支持 IE

标签: c# asp.net-mvc


【解决方案1】:

Detect Internet explorer browser version problems 中提到了其中的一些内容。

最后我知道Request.Browser 使用 ASP.NET 安装附带的 *.browser 文件,并且很容易过时。微软每隔一段时间就会向他们发布更新,但还不够频繁。目前webform pages breaking on IE10 在没有更新浏览器文件的情况下存在一些问题。

就像 cmets 所说,浏览器检测非常糟糕。如果您需要检测浏览器,至少避免使用用户代理字符串,并认真考虑为什么您需要确切知道使用的是什么浏览器。

【讨论】:

    【解决方案2】:

    Request.Browser.Version 并不总是为 IE 返回“正确”的浏览器版本,因为包括兼容性视图、元标记等在内的许多因素。

    您最好改为检测浏览器功能。进一步阅读:http://msdn.microsoft.com/library/3yekbd5b

    根据个人喜好,最好检测操作系统而不是浏览器。 IE9 及更高版本支持大多数常见的 HTML5/CSS3 功能,而 IE9 需要 Windows Vista 及更高版本。使用用户代理执行此操作的最佳方法是检查 Trident。如果通过浏览器或应用程序本身使用元标记启用了兼容性视图,则会返回错误的“版本”,但 Trident 仍然正确。

    PS。这不是万无一失的,但大多数情况下都可以。

    在此处进一步了解 Trident:http://msdn.microsoft.com/en-us/library/ms537503(v=vs.85).aspx#PltToken

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-02-17
      • 1970-01-01
      • 1970-01-01
      • 2015-07-11
      • 2015-02-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多