对各浏览器userAgent的检测客户端

一、正则验证设备方法

web前端能够通过js来辨别mobile or pc,下面就列举一些常用的浏览器userAgent:

var agent=navigator.userAgent;

var patternMobile=/mobile/ig;

var patternModel={

"iphone":new RegExp("iPhone",'i'),

"iPad":new RegExp("iPad",'i'),

"iPod":new RegExp("iPod",'i'),

"mini":new RegExp("mini",'i'),

"android":new RegExp("android",'i'),

"360":new RegExp("360\s+Aphone\s+Browser",'i'),

"baidu":new RegExp("baidubrowser",'i'),

"uc":new RegExp("UCBrowser",'i'),

"dolphin":new RegExp("DolphinBrowserCN",'i'),

"sougou":new RegExp("SogouMobileBrowser",'i'),

"lenvo":new RegExp("Lenovo-",'i'),"opera":new RegExp("OPR",'i'),

"chrome":new RegExp("chrome",'i'),

"firefox":new RegExp("FireFox",'i'),

"qq":new RegExp("MQQBrowser",'i'),

"nokia":new RegExp("NokiaBrowser",'i'),

"Symbian":new RegExp("Symbian",'i'),

"windowsphone":new RegExp("Windows\s+Phone|w7|w8",'i'),

"weixin":new RegExp("WindowsWechat",'i')

}

浏览器的检测

1.patternMobile.test(agent)                           //检测是否为手机端

2.patternModel.iphone.test(agent)              //检测是否为iphoe

3.patternModel.iPad.test(agent)                  //检测是否为ipad

4.patternModel.iPod.test(agent)                  //检测是否为iPod

5.patternModel.mini.test(agent)                  //检测是否为iphone mini

6.patternModel.iphone.test(agent) |patternModel.iPad.test(agent)|patternModel.iPod.test(agent)|patternModel.mini.test(agent)            //检测是否为iphone 设备

7.patternModel.android.test(agent)           //检测是否为android设备

8.patternModel.360.test(agent)&&patternMobile.test(agent)               //检测是否为360手机浏览器

9.patternModel.baidu.test(agent)&&patternMobile.test(agent)           //检测是否为百度手机浏览器

10.patternModel.uc.test(agent)&&patternMobile.test(agent) //检测是否为uc手机浏览器

11.patternModel.dolphin.test(agent)&&patternMobile.test(agent) //检测是否为海豚手机浏览器

12.patternModel.sougou.test(agent)&&patternMobile.test(agent) //检测是否为搜狗手机浏览器

13.patternModel.lenvo.test(agent)&&patternMobile.test(agent) //检测是否为联想自带手机浏览器

14.patternModel.opera.test(agent)&&patternMobile.test(agent) //检测是否为opera手机浏览器

15.patternModel.chrome.test(agent)&&patternMobile.test(agent) //检测是否为chrome手机浏览器

16.patternModel.firefox.test(agent)&&patternMobile.test(agent) //检测是否为firefox手机浏览器

17.patternModel.qq.test(agent)&&patternMobile.test(agent) //检测是否为qq手机浏览器

18.patternModel.nokia.test(agent)&&patternMobile.test(agent) //检测是否为nokia自带浏览器

19.patternModel.Symbian.test(agent)&&patternMobile.test(agent) //检测是否为Symbian浏览器

20.patternModel.windowsphone.test(agent) //检测是否为windowsphone

21.patternModel.weixin.test(agent) //检测是否为微信windows版

注:手机浏览器允许修改浏览器的标识,可能会出现检测异常的情况

二、完整的浏览器检查

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,
        x1l:false,
        
        iphone:false,
        ipod:false,
        ipad:false,
        ios:false,
        android:false,
        nokiaN:false,
        winMobile:false,
        wii: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 if(/Version\/(\S+)/.test(ua)){
            browser.ver=RegExp['$1'];
            browser.safari=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(/MISE ([^;]+)/.test(ua)){
        browser.ver=engine.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.x1l=(p=="X11") || (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;
    
    //windows 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.wii=ua.indexOf("Wii")>-1;
    system.ps=/playstation/i.test(ua);
    
    return {
        engine:engine,
        browser:browser,
        system:system
    };
}

 

你可能感兴趣的:(javascript学习)