浏览器类型

有时,我们需要获取客户端的类型,也就是通常所说的User-Agent,简称UA,我们在浏览网页时所使用的浏览器就是UA的一种,在Http协议中,通过User-Agent请求头来索命用户浏览器类型,操作系统,浏览器内核等信息的标识。通过这个标识可以根据不同的浏览器显示不同的版本,从而为用户提供更好的体验或者进行信息统计。

对于windows10 中的浏览器Edge的user-agent为:

User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36 Edge/12.10240

google浏览器,google浏览器提供了可供选择不同Divice。如下图所示:

User-Agent:Mozilla/5.0 (Linux; Android 4.4.2; Nexus 4 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.122 Mobile Safari/537.36

不同的浏览器有不同的UA,在asp.net中,服务器获取http请求之后,可以通过这个UA的说明来判断当前浏览器的类型,然后通过一个静态的数据库来获取浏览器的特征。常见浏览器的特征文件保存在%System%\Microsoft.NET\Framework\版本\Config\Browsers文件夹下,以.browser类型的文件形式提供。当获取了浏览器的特征数据之后,在asp.net中,将以HttpBrowserCapabilities类型对象的形式通过HttpRequest提供给开发人员。在HttpRequest中的Browser属性定义如下:

        //
        // Summary:
        //     Gets or sets information about the requesting client‘s browser capabilities.
        //
        // Returns:
        //     An System.Web.HttpBrowserCapabilities object listing the capabilities of
        //     the client‘s browser.
        public HttpBrowserCapabilities Browser { get; set; }
#region Assembly System.Web.dll, v4.0.0.0
// C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\System.Web.dll
#endregion

using System.Web.Configuration;

namespace System.Web
{
    // Summary:
    //     Enables the server to gather information on the capabilities of the browser
    //     that is running on the client.
    public class HttpBrowserCapabilities : HttpCapabilitiesBase
    {
        // Summary:
        //     Creates a new instance of the System.Web.HttpBrowserCapabilities class.
        public HttpBrowserCapabilities();
    }
}

HttpBrowserCapabilities有一个派生类MobileCapabilities,定义在命名空间System.Web.Mobile下。用来表示移动设备设置的UA。

   // Summary:
    //     Provides a single source for accessing capability information about a client
    //     device and for performing queries against device capabilities. For information
    //     about how to develop ASP.NET mobile applications, see the www.asp.net/mobile
    //     Web site.
    [Obsolete("The System.Web.Mobile.dll assembly has been deprecated and should no longer be used. For information about how to develop ASP.NET mobile applications, see http://go.microsoft.com/fwlink/?LinkId=157231.")]
    public class MobileCapabilities : HttpBrowserCapabilities

HttpRequest的Browser属性是可读写的属性,除了可以从中查询请求浏览器的特征信息,还可以通过设置为一个特定的浏览器对象来强制ASP.NET生成特定的结果。例如,设置为一个MobileCapabilties类型的对象来生成移动设备的网页。

HttpBrowserCapabilities提供了大量的只读属性,通过这些属性我们可以获得关于浏览器的能力特征。

比如:

namespace HttpRequestDemo
{
    public partial class UA : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            StringBuilder sb = new StringBuilder();
            //浏览器的名称
            sb.AppendFormat("Browser:{0}<br/>", Request.Browser.Browser);
            //主要版本
            sb.AppendFormat("MajorVersion:{0}<br/>",Request.Browser.MajorVersion);
            //次要版本
            sb.AppendFormat("MinorVersion:{0}<br/>", Request.Browser.MinorVersion);
            //clr版本
            sb.AppendFormat("ClrVersion:{0}<br/>", Request.Browser.ClrVersion);
            //是否支持activex控件
            sb.AppendFormat("ActiveXControls:{0}<br/>", Request.Browser.ActiveXControls);
            //是否支持cookie
            sb.AppendFormat("Cookies:{0}<br/>", Request.Browser.Cookies);
            //支持的ECMA脚本的版本号
            sb.AppendFormat("EcmaScriptVersion:{0}<br/>", Request.Browser.EcmaScriptVersion);
            //支持的W3C DOM的版本号
            sb.AppendFormat("W3CDomVersion:{0}<br/>", Request.Browser.W3CDomVersion);
            Response.Write(sb.ToString());

        }
    }
}

也可以通过自定义.browser文件来扩展浏览器的特征。在网站项目中,用于定义浏览器特征的.browser文件必须保存在特定的文件夹App_Browsers中。

有些浏览器比如google,firefox可以模拟不同的UA。

时间: 2024-10-05 05:06:49

浏览器类型的相关文章

js判断浏览器类型

js判断浏览器类型  <script type="text/javascript" >     <!--   function getOs()   {       var OsObject = "";      if(isIE = navigator.userAgent.indexOf("MSIE")!=-1) {           return "MSIE";      }      if(isFiref

用Javascript判断访问来源操作系统, 设备, 浏览器类型

var browser = { os : function () { var u = navigator.userAgent; return {// 操作系统 linux: !!u.match(/\(X11;( U;)? Linux/i), // Linux windows: !!u.match(/Windows/i), // Windows android: !!u.match(/Android/i), // Android iOS: !!u.match(/\(i[^;]+;( U;)? CP

!+&quot;\v1&quot; 用来“判断浏览器类型”还是用来“IE判断版本”的问题!

这种写法是利用各浏览器对转义字符"\v"的理解不同来判断浏览器类型.在IE中,"\v"没有转义,得到的结果为"v".而在其他浏览器中"\v"表示一个垂直制表符,所以ie解析的"\v1" 为 "v1",而其他浏览器解析到 "\v1" 为 "1". 在前面加上一个"+"是为了把后面的字符串转变成数字.由于IE认为"\v1&

JavaScript判断浏览器类型及版本

说明:以下内容参考了一些网上资料以及同事间的一些讨论. 浏览器对于我们来说,可能是最熟悉的工具了.记得最早那会Netscape,到后来的Internet Explorer一统江湖,再到现在的FireFox大行其道,浏览器市场的争夺,可谓是硝烟弥漫.除了我们常见的IE, Firefox, Opera, Safari四大金刚以外,新近又出了一位Chrome,虽然新出,但是出于Google这个名门,Chrome所受到的关注绝不亚于先前的四大金刚,看来以后要改为5朵金花了,呵呵.除了这些熟知的浏览器以外

js中浏览器类型判断

在JS中判断浏览器的类型,估计是每个编辑过页面的开发人员都遇到过的问题.在众多的浏览器产品中,IE.Firefox.Opera.Safari........众多品牌却标准不一,因此时常需要根据不同的浏览器,甚至相同浏览器不同版本做不同的操作,因此,知晓浏览器的判断方法,还是很重要的.下面列举一下常用的判断方法:1.判断浏览器是否为IE        document.all ? 'IE' : 'others':在IE下document.all值为1,而其他浏览器下的值为0:        nav

关于浏览器类型和版本号的思考

很多时候,我们需要根据浏览器版本做这样或者那样的事情,这里主要包括JS层的和CSS样式层面上. CSS层面上的话,这里我就不比多说了主要是因为浏览器对CSS样式标准支持的程度不一样导致的,最多见的就是IE系的:JS层面的话是浏览器在最初标准不统一是出现的各种问题,形成了当前的各种令人头疼的问题,即使是同一种浏览器在不同的版本号下可能也会存在各种的问题,这个时候处理浏览器的兼容性就至关重要了,那我们就需要能够分清楚用户当前使用的是什么样的浏览器,该做什么样的事情.这个的话可以多学习一下类似jque

js判断浏览器类型以及版本

你知道世界上有多少种浏览器吗?除了我们熟知的IE, Firefox, Opera, Safari四大浏览器之外,世界上还有近百种浏览器. 几天前,浏览器家族有刚诞生了一位小王子,就是Google推出的Chrome浏览器.由于Chrome出生名门,尽管他还是个小家伙,没有人敢小看他.以后,咱们常说浏览器的“四大才子”就得改称为“五朵金花”了. 在网站前端开发中,浏览器兼容性问题本已让我们手忙脚乱,Chrome的出世不知道又要给我们添多少乱子.浏览器兼容性是前端开发框架要解决的第一个问题,要解决兼容

检测浏览器类型及版本

var Sys = Sys || {};Sys.browser = Sys.browser || function (w, d, n) { var u = n.userAgent.toLowerCase(), browser = {}; browser.u = u; browser.render = d.compatMode; if (n.product === 'Gecko') browser.gecko = true; if (/ applewebkit\/(\d+\.\d+)/i.test

js怎么判断浏览器类型

<script type="text/javascript"> function isIE(){ return navigator.appName.indexOf("Microsoft Internet Explorer")!=-1 && document.all; } function isIE6() { return navigator.userAgent.split(";")[1].toLowerCase().i

JavaScript 浏览器类型及版本号

项目中偶尔用到判断浏览器类型及相关版本问题,现记录相关代码: function getBrowserInfo(userAgent) { var browserName, browserVersion; if (userAgent.indexOf("MSIE") > -1) { var types = userAgent.substring(userAgent.indexOf("MSIE")); var Info = (types.split(";&q