zoukankan      html  css  js  c++  java
  • 在应用程序里识别UserAgent对应的浏览器

    ASP.Net有很好的机制来识别用户的浏览器: 用Request.Browser就可以拿到一个HttpBrowserCapabilities,然后用相应的属性可以取到值,比较浏览器类型,屏幕大小,JS支持等等。对于移动设备更可以这么用,很容易拿到需要的属性(当然ASP.Net自带的浏览器库还是很不全)。

    但是怎样在WinApp里根据UserAgent识别浏览器呢?我通过Reflector看到主要是在BrowserCapabilitiesFactory这个类中对浏览器的Capability进行设置,于是把里面的一部分代码拿出来,发现果然可以用:  

     1string UA = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506; .NET CLR 1.1.4322; InfoPath.2; MS-RTC LM 8)";
     2
     3BrowserCapabilitiesFactory f = new BrowserCapabilitiesFactory();
     4HttpBrowserCapabilities browserCaps = new HttpBrowserCapabilities();
     5Hashtable hashtable = new Hashtable(180, StringComparer.OrdinalIgnoreCase);
     6hashtable[string.Empty] = UA;
     7browserCaps.Capabilities = hashtable;
     8NameValueCollection headers = new NameValueCollection();
     9
    10f.ConfigureBrowserCapabilities(headers, browserCaps);

    这样在browserCaps类里拿到浏览器的各种属性。

    更进一步,因为ASP.Net自带的BrowserCapabilities太少,如果要自己为应用程序加一些UA的识别,特别是移动设备等,可以用.Net 2.0支持的Browser添加机制(大概微软会发布一些最新移动设备的.Browser文件)。具体方法如下:

    1、用VS新建一个Website,"Add ASP.Net Folder" - "App_Browsers",把下载到或自己写的.Browser文件放到里面。

    2、Publish Web Site, 到编译出来的目录下找到bin目录,有一个App_Browsers.dll。

    3、到C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727目录下运行: 

    aspnet_regbrowsers.exe -i

    这样在C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\CONFIG\Browsers目录下可以拿到一个ASP.BrowserCapsFactory.dll。

    4、在你的应用程序里引用App_Browsers.dll和ASP.BrowserCapsFactory.dll,把最上面那段代码中的BrowserCapabilitiesFactory f = new BrowserCapabilitiesFactory();改成: 

    ASP.ApplicationBrowserCapabilitiesFactory f = new ASP.ApplicationBrowserCapabilitiesFactory();

    就可以在你的应用程序里用UA识别出浏览器了!

  • 相关阅读:
    STL:set/multiset用法详解
    STL:list用法详解
    STL:deque用法详解
    STL:vector容器用法详解
    Axure RP chrome插件显示已损坏或者无法安装的解决方法
    怎样知道自己机器的出口网关IP(即外部IP)
    [Selenium]怎样验证页面是否有无变化
    [Selenium]刷新页面 Refresh page
    [SoapUI]怎样获取隐藏元素的文本内容Get text of hidden element
    [SoapUI]怎样从应答报文中获取某个字段的值,然后用其改写某个变量
  • 原文地址:https://www.cnblogs.com/wonderow/p/1355551.html
Copyright © 2011-2022 走看看