【问题标题】:Unable to determine the browser version in IE11IE11无法判断浏览器版本
【发布时间】:2015-03-25 10:06:43
【问题描述】:

我正在尝试使用以下代码确定用户访问我们应用程序的浏览器和版本:

public bool MyBrowser(HttpRequestBase request)
    {
        HttpBrowserCapabilitiesBase browser = request.Browser;
        switch (browser.Browser)
        {
            case "IE":
                {
                    if (browser.MajorVersion < 6)
                        //do something
                }
            case "Firefox":
                {
                    if (browser.MajorVersion < 3)
                        //do something
                }
            case "AppleMAC-Safari":
                {
                    if (request.UserAgent.Contains("Chrome") || browser.MajorVersion < 4)
                        return false;
                    return true;

                }

            default: return false;
       }
 }

当用户在 IE11 中打开网站时,此代码总是返回 false,这部分工作正常,直到我们迁移到 IE11。发生这种情况的原因可能是什么。请建议是否有解决方法。

【问题讨论】:

标签: c# asp.net httprequest internet-explorer-11


【解决方案1】:

您可以使用类似于下面的函数来检测 IE11。对于非 IE 浏览器,它返回 0。

 
function ie_ver() {
  var iev = 0;
  var ieold = (/MSIE (\d+\.\d+);/.test(navigator.userAgent));
  var trident = !!navigator.userAgent.match(/Trident\/7.0/);
  var rv = navigator.userAgent.indexOf("rv:11.0");

  if (ieold) iev = new Number(RegExp.$1);
  if (navigator.appVersion.indexOf("MSIE 10") != -1) iev = 10;
  if (trident && rv != -1) iev = 11;

  return iev;
}


alert(ie_ver())

【讨论】:

  • 同意上面的代码有效,但我有很多浏览器要检查。我宁愿在后面的代码中做到这一点。谢谢!
  • 也可以在后面的代码中检查UserAgent是否包含Trident,例如: if (request.UserAgent.Contains("Trident")) { //IE11}
  • 当然。感谢您的帮助!
猜你喜欢
  • 1970-01-01
  • 2016-07-26
  • 1970-01-01
  • 2013-02-09
  • 1970-01-01
  • 2012-06-25
  • 2012-03-05
  • 2011-01-01
  • 2016-12-05
相关资源
最近更新 更多