【问题标题】:The best browser detection solution in ASP.NET 4.0ASP.NET 4.0 中最好的浏览器检测解决方案
【发布时间】:2011-07-08 17:02:52
【问题描述】:

我在谷歌上搜索了这个主题,发现了三种不同的方式来配置浏览器功能:browscap.ini、web.config 中的 browserCaps 元素和 App_Browsers 中的 .browser 文件。我认为 .browser 文件是最新的方式,但我似乎没有找到最新的文件。但是我从http://browsers.garykeith.com/downloads.asp 找到了相当新鲜的browscap.ini。

我的首要任务是从访问者统计信息中排除常见的爬虫。第二个优先级是检测浏览器和操作系统的正确版本(例如 Opera 11 / Win7)。

有没有我可以使用的库? browscap.ini 仍然是一种有效的方法吗?是否可以在不访问系统文件的情况下使用它?在哪里可以找到最新的 .browser 文件?

【问题讨论】:

标签: asp.net asp.net-4.0 browser-detection


【解决方案1】:

最好的答案是特征检测,而不是浏览器检测!在 Firefox 和 Chrome 每隔几个月发布版本并且移动浏览器使用量不断增长的那一天尤其如此。使用 Modernizr (http://Modernizr.com) 或等效库来检测您感兴趣的功能。

【讨论】:

  • 我不需要知道浏览器是否支持最新的css或html5技巧。我写的是关于 C#/.net 编程的文章,目标受众很可能拥有 Windows 和最前沿的浏览器。我很想知道其他人对什么感兴趣。
  • 只要浏览器存在漏洞,我就会想知道人们使用的是什么浏览器。如果客户给我打电话或发邮件说页面看起来坏了,我会想知道他们的浏览器,看看我是否可以重复。我宁愿提前检测并记录他们的浏览器版本,也不愿尝试在手机上从他们那里获取这些信息。
【解决方案2】:

我从http://user-agent-string.info/ 找到了一个用户代理解析器,它似乎对我的目的来说已经足够了。

【讨论】:

    【解决方案3】:

    所以没有其他人会走上这条黑暗的道路,请注意,即使是 jQuery 团队也建议您不要使用 jQuery.browser 对象:

    "$.browser 属性在 jQuery 1.3 中已弃用"

    【讨论】:

      【解决方案4】:

      到目前为止,我使用http://api.jquery.com/jQuery.browser/ 进行客户端检测。

      【讨论】:

      • 不推荐使用这个。这来自 jQuery 官方文档:“我们建议不要使用此属性;请尝试改用特征检测(请参阅 jQuery.support)。jQuery.browser 可能会在 jQuery 的未来版本中移动到插件中。”
      • 确实,它在 v1.3 中已被弃用,并在 v1.9 中完全删除。
      【解决方案5】:

      更多信息:http://msdn.microsoft.com/en-us/library/3yekbd5b.aspx 你检查过这个吗:

          System.Web.HttpBrowserCapabilities browser = Request.Browser;
          string s = "Browser Capabilities\n"
              + "Type = "                    + browser.Type + "\n"
              + "Name = "                    + browser.Browser + "\n"
              + "Version = "                 + browser.Version + "\n"
              + "Major Version = "           + browser.MajorVersion + "\n"
              + "Minor Version = "           + browser.MinorVersion + "\n"
              + "Platform = "                + browser.Platform + "\n"
              + "Is Beta = "                 + browser.Beta + "\n"
              + "Is Crawler = "              + browser.Crawler + "\n"
              + "Is AOL = "                  + browser.AOL + "\n"
              + "Is Win16 = "                + browser.Win16 + "\n"
              + "Is Win32 = "                + browser.Win32 + "\n"
              + "Supports Frames = "         + browser.Frames + "\n"
              + "Supports Tables = "         + browser.Tables + "\n"
              + "Supports Cookies = "        + browser.Cookies + "\n"
              + "Supports VBScript = "       + browser.VBScript + "\n"
              + "Supports JavaScript = "     + 
                  browser.EcmaScriptVersion.ToString() + "\n"
              + "Supports Java Applets = "   + browser.JavaApplets + "\n"
              + "Supports ActiveX Controls = " + browser.ActiveXControls 
                    + "\n"
              + "Supports JavaScript Version = " +
                  browser["JavaScriptVersion"] + "\n";
      
          TextBox1.Text = s;
      

      【讨论】:

      • 我一直在使用 Request.Browser 来获取浏览器信息,但我需要最新的配置文件。当我使用 Opera 11/Win7 进行测试时,它给了我 Opera 9.80/WinNT。
      猜你喜欢
      • 2011-10-11
      • 1970-01-01
      • 2016-04-18
      • 1970-01-01
      • 1970-01-01
      • 2016-03-31
      • 2014-05-03
      • 2012-01-14
      • 1970-01-01
      相关资源
      最近更新 更多