zoukankan      html  css  js  c++  java
  • 检测浏览器版本(综合整理)

    浏览器版本号检测

    本文检测部分来自于Missyouzhang的专栏
    浏览器的navigator.userAgent来自于网络
    完整的用户代理字符串检测脚本来自于高程3P242

    浏览器的navigator.userAgent

    桌面
    
    ============================================
    
    IE
      而IE各个版本典型的userAgent如下:
      Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0)
      Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2)
      Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)
      Mozilla/4.0 (compatible; MSIE 5.0; Windows NT)
      其中,版本号是MSIE之后的数字。
    
    注:
    MSIE后面跟的数字为IE的版本号,如MSIE 8.0代表IE8, Windows NT 6.1 对应操作系统 windows 7
    Windows NT 6.0 对应操作系统 windows vista  
    Windows NT 5.2 对应操作系统 windows 2003   
    Windows NT 5.1 对应操作系统 windows xp   
    Windows NT 5.0 对应操作系统 windows 2000   
    
    UNIX/LINUX下的为X11代替,具体可以从网上找下,百度百科上也有的。
    
    Firefox
      Firefox几个版本的userAgent大致如下:
      Mozilla/5.0 (Windows; U; Windows NT 5.2) Gecko/2008070208 Firefox/3.0.1
      Mozilla/5.0 (Windows; U; Windows NT 5.1) Gecko/20070309 Firefox/2.0.0.3
      Mozilla/5.0 (Windows; U; Windows NT 5.1) Gecko/20070803 Firefox/1.5.0.12  其中,版本号是Firefox之后的数字。
    注:N: 表示无安全加密   I: 表示弱安全加密   U: 表示强安全加密     上面的U代表加密等级
    Opera
      Opera典型的userAgent如下:
      Opera/9.27 (Windows NT 5.2; U; zh-cn)
      Opera/8.0 (Macintosh; PPC Mac OS X; U; en)
      Mozilla/5.0 (Macintosh; PPC Mac OS X; U; en) Opera 8.0 
      其中,版本号是靠近Opera的数字。
    
    Safari
      Safari典型的userAgent如下:
      Mozilla/5.0 (Windows; U; Windows NT 5.2) AppleWebKit/525.13 (KHTML, like Gecko) Version/3.1 Safari/525.13
      Mozilla/5.0 (iPhone; U; CPU like Mac OS X) AppleWebKit/420.1 (KHTML, like Gecko) Version/3.0 Mobile/4A93 Safari/419.3
      其版本号是Version之后的数字。
    
    Chrome
      目前,Chrome的userAgent是:
    Mozilla/5.0 (Windows; U; Windows NT 5.2) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.2.149.27 Safari/525.13 
      其中,版本号在Chrome之后的数字。
    
    Navigator
    目前,Navigator的userAgent是:
    Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.12) Gecko/20080219 Firefox/2.0.0.12 Navigator/9.0.0.6
    其中,版本号在Navigator之后的数字。
    
    360SE                                                                                                                                                                  Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; 360SE)
    
    
    360
    
    [USER_AGENT] => Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; 360SE)
    
    360极速浏览器
    
    [USER_AGENT] => Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ;  QIHU 360EE)
    
    傲游浏览器
    
    [USER_AGENT] => Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; Maxthon/3.0)
    
    TT
    
    [USER_AGENT] => Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; TencentTraveler 4.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) )
    
    safari
    
    [USER_AGENT] => Mozilla/5.0 (Windows NT 5.1) AppleWebKit/534.55.3 (KHTML, like Gecko) Version/5.1.5 Safari/534.55.3
    
    ==============================
    
    移动
    
    ==============================
    
    安卓 QQ浏览器
    
    Mozilla/5.0 (Linux; U; Android 4.0.3; zh-cn; M032 Build/IML74K) AppleWebKit/533.1 (KHTML, like Gecko)Version/4.0 MQQBrowser/4.1 Mobile Safari/533.1
    
    安卓 原生浏览器
    
    Mozilla/5.0 (Linux; U; Android 4.0.3; zh-cn; M032 Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30
    
    安卓 UC
    
    Mozilla/5.0 (Linux; U; Android 4.0.3; zh-cn; M032 Build/IML74K) UC AppleWebKit/534.31 (KHTML, like Gecko) Mobile Safari/534.31
    
    安卓 Opera
    
    Opera/9.80 (Android 4.0.3; Linux; Opera Mobi/ADR-1210241554) Presto/2.11.355 Version/12.10
    
    三星手机
    
    SAMSUNG-SGH-G508E/G508EZCIG2 SHP/VPP/R5 NetFront/3.4 Qtv5.3 SMM-MMS/1.2.0 profile/MIDP-2.0 configuration/CLDC-1.1
    
    iphone safria
    
    Mozilla/5.0 (iPhone; CPU iPhone OS 5_1_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9B206 Safari/7534.48.3
    
    iphone QQ
    
    MQQBrowser/38 (iOS 4; U; CPU like Mac OS X; zh-cn)
    
    iphone UC
    
    IUC(U;iOS 5.1.1;Zh-cn;320*480;)/UCWEB8.9.1.271/42/800
    
    塞班 自带浏览器
    
    Nokia5320/04.13 (SymbianOS/9.3; U; Series60/3.2 Mozilla/5.0; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML, like Gecko) Safari/413
    
    塞班 QQ浏览器
    
    Nokia5320(19.01)/SymbianOS/9.1 Series60/3.0
    

    检测

    JQ判断浏览器

    通过jQuery 判断浏览器的内核及版本号

    <script type="text/javascript">
        $(function () {
            if ($.browser.msie && ($.browser.version == "7.0")) {
                $("#yourannet").css("margin-left", "10px");
            }  //IE7浏览器
            else if ($.browser.msie && ($.browser.version == "6.0") && !$.support.style) {
                $("#yourannet").css("margin-left", "15px");
            }  //IE6浏览器
            else if ($.browser.msie && ($.browser.version == "8.0")) {
                $("#yourannet").css("margin-left", "20px");
            }  //IE8浏览器
            else if ($.browser.msie && ($.browser.version == "9.0")) {
                $("#yourannet").css("margin-left", "25px");
            } // IE9 浏览器
            else if (window.navigator.userAgent.toLowerCase().indexOf("360se") >= 1) {
                $("#yourannet").css("margin-left", "30px");
            }//360浏览器
        })
    

    jQuery 使用的是通过正则来匹配userAgent判断浏览器的种类和版本. 如果我们要来判断当前浏览器是否是IE6应该如何来判断?

    $(function() {
      if($.browser.msie) {
      alert("this is msie");
    }
    else if($.browser.safari)
    {
      alert("this is safari!");
    }
    else if($.browser.mozilla)
    {
      alert("this is mozilla!");
    }
    else if($.browser.opera) {
      alert("this is opera");
    }
    else {
      alert("i don't konw!");
    }
    

    以下是jquery的正则表达式:支持区分ie、firefox、opera、chrome、safari

    // browser check-----start
     var userAgent = navigator.userAgent, // userAgent
     rMsie = /.*(msie) ([\w.]+).*/, // ie
     rFirefox = /.*(firefox)\/([\w.]+).*/, // firefox
     rOpera = /(opera).+version\/([\w.]+)/, // opera
     rChrome = /.*(chrome)\/([\w.]+).*/, // chrome
     rSafari = /.*version\/([\w.]+).*(safari).*/;// safari
     jMeteor.browser = {};
     var ua = userAgent.toLowerCase();
     function uaMatch(ua) {
      var match = rMsie.exec(ua);
      if (match != null) {
       return { browser : match[1] ¦¦ "", version : match[2] ¦¦ "0" };
      }
      var match = rFirefox.exec(ua);
      if (match != null) {
       return { browser : match[1] ¦¦ "", version : match[2] ¦¦ "0" };
      }
      var match = rOpera.exec(ua);
      if (match != null) {
       return { browser : match[1] ¦¦ "", version : match[2] ¦¦ "0" };
      }
      var match = rChrome.exec(ua);
      if (match != null) {
       return { browser : match[1] ¦¦ "", version : match[2] ¦¦ "0" };
      }
      var match = rSafari.exec(ua);
      if (match != null) {
       return { browser : match[2] ¦¦ "", version : match[1] ¦¦ "0" };
      }
      if (match != null) {
       return { browser : "", version : "0" };
      }
     }
     var browserMatch = uaMatch(userAgent.toLowerCase());
     if (browserMatch.browser) {
      jMeteor.browser[browserMatch.browser] = true;
      jMeteor.browserName = browserMatch.browser;
      jMeteor.browser.version = browserMatch.version;
      jMeteor.browser.language = (navigator.language ? navigator.language
        : navigator.userLanguage ¦¦ "");
     }
     // browser check-----end
        
         
        使用方法:
        Javascript代码
        jMeteor.browser.msie //判断是否为ie,返回true则代表是
        jMeteor.browserName //浏览器名称
        jMeteor.browser.version //浏览器版本
        jMeteor.browser.language //语言
    </script>
    

    通过浏览器版本信息判断各浏览器

    var _uat=navigator.userAgent; 
    if(_uat.indexOf("MSIE 6.0")>0) alert("ie6"); 
    else if(_uat.indexOf("MSIE 7.0")>0) alert("ie7"); 
    else if(_uat.indexOf("MSIE 8.0")>0) alert("ie8"); 
    else if(_uat.indexOf("Firefox")>0) alert("firefox"); 
    

    CSS判断浏览器

    #example{color:red ;} /*firefox*/ 
    * html #example{color:blue;} /*ie6*/ 
    *+html #example{color:green;} /*ie7*/
    

    HTML判断浏览器

    <!--[if !IE]><!-->除IE外都可识别<!--<![endif]--> 
    <!--[if IE]> 所有的IE可识别<![endif]--> 
    <!--[if IE 6]> 仅IE6可识别<![endif]--> 
    <!--[if lt IE 6]> IE6以及IE6以下版本可识别<![endif]--> 
    <!--[if gte IE 6]> IE6以及IE6以上版本可识别<![endif]--> 
    <!--[if IE 7]> 仅IE7可识别<![endif]--> 
    <!--[if lt IE 7]> IE7以及IE7以下版本可识别<![endif]--> 
    <!--[if gte IE 7]> IE7以及IE7以上版本可识别<![endif]--> 
    

    完整的用户代理字符串检测脚本

    来自于高程3p242

    //完整的用户代理字符串检测脚本
    var client = function () {
    
        //呈现引擎
        var engine = {
            ie: 0,
            gecko: 0,
            webkit: 0,
            khtml: 0,
            opera: 0,
            //完整的版本号
            ver: null
        };
    
    
        //浏览器
        var browser = {
            //主要浏览器
            ie: 0,
            firefox: 0,
            safari: 0,
            konq: 0,
            opera: 0,
            chrome: 0,
            //具体的版本号
            ver: null
        };
    
    
        //平台,设备的操作系统
        var system = {
            win: false,
            mac: false,
            xll: false,
            //移动设备
            iphone: false,
            ipod: false,
            ipad: false,
            ios: false,
            android: false,
            nokiaN: false,
            winMobile: false,
            //游戏系统
            will: false,
            ps: false
        };
    
        //检测呈现引擎和浏览器
        var ua = navigator.userAgent;
        if (window.opera) {
            engine.ver = browser.ver = window.opera.version();
            engine.opera = browser.opera = parseFloat(engine.ver);
        } else if (/AppleWebKit\/(\S+)/.test(ua)) {
            engine.ver = RegExp.$1;
            engine.webkit = parseFloat(engine.ver);
            //确定是chrome还是Safari
            if (/Chrome\/(\S+)/.test(ua)) {
                browser.ver = RegExp.$1;
                browser.chrome = parseFloat(browser.ver);
            } else {
                //近似地确定版本号
                var safariVersion = 1;
                if (engine.webkit < 100) {
                    safariVersion = 1;
                } else if (engine.webkit < 312) {
                    safariVersion = 1.2;
                }
                else if (engine.webkit < 412) {
                    safariVersion = 1.3;
                }
                else {
                    safariVersion = 2;
                }
                browser.safari = browser.ver = safariVersion;
            }
        } else if (/KHTML\/(\S+)/.test(ua) || /Konqueror\/([^;]+)/.test(ua)) {
            engine.ver = browser.ver = RegExp.$1;
            engine.khtml = browser.konq = parseFloat(engine.ver);
        } else if (/rv:([^\)]+)\) Gecko\/\d{8}/.test(ua)) {
            engine.ver = RegExp.$1;
            engine.gecko = parseFloat(engine.ver);
            //确定是不是firefox
            if (/Firefox\/(\S+)/.test(ua)) {
                browser.ver = RegExp.$1;
                browser.firefox = parseFloat(browser.ver);
            }
        } else if (/MSIE ([^;]+)/.test(ua)) {
            engine.ver = browser.ver = RegExp.$1;
            engine.ie = browser.ie = parseFloat(engine.ver);
        }
    //检测浏览器
        browser.ie = engine.ie;
        browser.opera = engine.opera;
    
        //检测平台
        var p = navigator.platform;
        system.win = p.indexOf("Win") == 0;
        system.mac = p.indexOf("Mac") == 0;
        system.xll = (p == "Xll") || (p.indexOf("Linux") == 0);
    
        //检测Windows操作系统
        if (system.win) {
            if (/Win(?:dows)?([^do]{2})\s?(\d+\.\d+)?/.test(ua)) {
    
                if (RegExp.$1 == "NT") {
                    switch (RegExp.$2) {
                        case "5.0":
                            system.win = "2000";
                            break;
                        case "5.1":
                            system.win = "XP";
                            break;
                        case "6.0":
                            system.win = "Vista";
                            break;
                        case "6.1":
                            system.win = "7";
                            break;
                        default :
                            system.win = "NT";
                            break;
                    }
                } else if (RegExp.$1 == "9x") {
                    system.win = "ME";
                } else {
                    system.win = RegExp.$1;
                }
            }
        }
    
        //移动设备
        system.iphone = ua.indexOf("iPhone") > -1;
        system.ipod = ua.indexOf("iPod") > -1;
        system.ipad = ua.indexOf("iPad") > -1;
        system.nokiaN = ua.indexOf("NokiaN") > -1;
        //windos mobile
        if (system.win == "CE") {
            system.winMobile = system.win;
        } else if (system.win == "Ph") {
            if (/Windows Phone OS (\d+. \d)/.test(ua)) {
                system.win = "Phone";
                system.winMobile = parseFloat(RegExp.$1);
            }
        }
    //检测iOS 版本
        if (system.mac && ua.indexOf("Mobile") > -1) {
            if (/CPU (?:iPhone )?OS (\d+_\d+)/.test(ua)) {
                system.ios = parseFloat(RegExp.$1.replace("_", "."));
            } else {
                system.ios = 2;//不能真正检测出来,所以只能猜测
            }
        }
        //检测Android版本
        if (/Android (\d+\. \d+)/.test(ua)) {
            system.android = parseFloat(RegExp.$1);
        }
        //游戏系统
        system.will = ua.indexOf("Wii") > -1;
        system.ps = /playstation/i.test(ua);
        //返回这些对象
        return
        {
            engine:engine,
                    browser
        :
            browser,
                    system
        :
            system
        }
        ;
    
    }();
    
  • 相关阅读:
    zabbix(x)
    kvm 学习(三)存储池
    kvm 学习(二)镜像
    hadoop3.1.1:找不到或无法加载主类 org.apache.hadoop.mapreduce.v2.app.MRAppMaster
    (转)mysql更改数据目录
    (转)SLOW READPROCESSOR;ERROR SLOW BLOCKRECEIVER错误日志分析
    Linux下 为什么有时候使用sudo也提示没有权限
    (转)hadoop 常规错误问题(一)
    (转)SmartPing:一个服务器Ping值监测工具
    (转)hadoop 配置文件解释
  • 原文地址:https://www.cnblogs.com/changzhenan/p/7193638.html
Copyright © 2011-2022 走看看