• [转载] javascript 浏览器类型


    -----------------------------------------------------------------------------
    browserinfo.js #
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    
    // from: http://hao.360.cn/zt/browserinfo.html
    if(!window.console)
    {
        console = {};
        console.log = function(){
            alert(Array.prototype.slice.call(arguments));
        };
    }
    var browserDetector = (function(){
        // Useragent RegExp
        var rwebkit = /(webkit)[ \/]([\w.]+)/,
        ropera = /(opera)(?:.*version)?[ \/]([\w.]+)/,
        rmsie = /(msie) ([\w.]+)/,
        rsafari = /(safari)[ \/]([\w.]+)/,
        rmozilla = /(mozilla)(?:.*? rv:([\w.]+))?/,
        rfirefox = /(firefox)[ \/]([\w.]+)/,
        rtrident = /(trident)[ \/]([\w.]+)/,
        rgecko = /(gecko)[ \/]([\w]+)/,
        rchrome = /(chrome)[ \/]([\w.]+)/,
        rpresto = /(presto)[ \/]([\w.]+)/,
        rshell = /(maxthon|360se|360ee|theworld|se|theworld|greenbrowser|mqqbrowser|qqbrowser|tencenttraveler)[ \/]?([\w.]*)/,
        //device
        randroid = /(android)[ \/]([\w.]+)/,
        ripad = /(ipad)(?:.*os)? ([\d_]+)/,
        riphone = /(iphone)(?:.*os)? ([\d_]+)/,//untested
        //ripod = /(ipod)(?:.*os)? ([\d_]+)/,//untested
        roperamini = /(opera mini)[ \/]([\w.]+)/,//untested
        rblackberry = /(blackberry)([\d]+)/,//untested
        rnokia = /(nokia)([\w]+)[ \/]///untested
        rsymbian = /(symbianos)[ \/]([\w.]+)(?:.*)(series60)[ \/]([\w.]+)?///untested
        rwinmob = /(iris|3g_t|windows ce|opera mobi|windows ce; smartphone;|windows ce; iemobile)/,//untested
        noneDouble=["",""],noneTriple = ["","",""];
        return function(ua){
            var info = {};
            //core----------
            var core = rchrome.exec( ua ) ||
                rsafari.exec( ua ) ||
                ropera.exec( ua ) ||
                rmsie.exec( ua ) ||
                rfirefox.exec( ua ) ||
                ua.indexOf("compatible") < 0 && rmozilla.exec( ua ) ||
                noneTriple;
            //shell----------
            var shell = rshell.exec( ua )||noneTriple,
                the360se = function(){
                    try{
                        var is360se = external.twGetRunPath.toLowerCase().indexOf("360se")>-1?true:false;
                        if(is360se)
                        {
                            try{
                                var version = external.twGetVersion(external.twGetSecurityID(window));
                                return ["360se",version];
                            }catch(e){
                                return ["360se","-"];
                            }
                        }
                        return noneDouble;
                    }catch(e){return noneDouble;}
                }(),
                theMaxthon = function() {
                    try {
                        if (/(\d+\.\d)/.test(external.max_version)) {
                            return ["maxthon",parseFloat(RegExp['\x241'])];
                        }
                        return noneDouble;
                    } catch (e) {return noneDouble;}
                }();
            //layout engine----------
            var layout = rtrident.exec( ua ) ||
                rwebkit.exec( ua ) ||
                rgecko.exec( ua ) ||
                rpresto.exec( ua ) || noneTriple;
            //device----------
            var device = randroid.exec(ua)||
                riphone.exec(ua)||
                ripad.exec(ua)||
                roperamini.exec(ua)||
                rblackberry.exec(ua)||
                rnokia.exec(ua)||
                noneTriple;
            if(!device[1]){
                var winmob = rwinmob.exec(ua);
                if(winmob){
                    device = ["","Windows Smartphone",""];
                }else{
                    device = ["","Desktop","full capability browser"];
                }
            }else if(device[1]==="android"){
                device = [device[0],"Mobile device","android "+device[2]];
            }else if(device[1]==="ipad"||device[1]==="iphone"){
                device[2] = "IOS "+device[2].replace(/_/g,".");
            }else if(device[1]==="nokia"){
                var symbian = rsymbian.exec(ua);
                if(symbian)
                    device = ["",device[1]+device[2],"("+symbian[1]+"/"+symbian[2]+" "+symbian[3]+"/"+symbian[4]+")"];
                else
                    device = ["",device[1]+device[2],""];
            }
            //-----------
            info.layout = [layout[1],layout[2]];
            info.core = [core[1],core[2]];
            info.shell = [shell[1],shell[2]];
            if(the360se[0]){
                info.shell = the360se;
            } else if(theMaxthon[0]) {
                info.shell = theMaxthon;
            }
            info.script = function(){
                if(core[1]==="msie"){
                    try{
                        return [ScriptEngine(),[ScriptEngineMajorVersion(),ScriptEngineMinorVersion(),ScriptEngineBuildVersion()].join(".")];
                    }catch(e){
                        return noneDouble;
                    }
                }else{
                    return noneDouble;
                }
            }();
            info.documentMode = document.documentMode;
            info.browserMode = function(){
                if(browserMode===7){
                    if(layout[2]=="5.0"){
                        browserMode += " (IE9兼容模式)"
                    }else if(core[2]=="8.0"||layout[2]=="4.0"){
                        browserMode += " (IE8兼容模式)"
                    }
                }
                return browserMode;
            }();
            info.compatMode = document.compatMode;
            info.device = [device[1],device[2]];
            return info;
        };
    })();
        
    (function(){
        var info = browserDetector(navigator.userAgent.toLowerCase()),
            _d = function(id){return document.getElementById(id);};
        _d("browserCore").innerHTML = info.core.join(" / ");
        _d("layoutEng").innerHTML = info.layout.join(" / ");
        _d("scriptEng").innerHTML = info.script.join(" / ");
        _d("compatMode").innerHTML = info.compatMode;
        _d("browserShell").innerHTML = info.shell.join(" / ");
        _d("device").innerHTML = info.device.join(" / ");
        if(info.core[0]==="msie"&&/*@cc_on!@*/0){
            _d("browserMode").innerHTML = info.browserMode;
            _d("documentMode").innerHTML = info.documentMode;
        }
    })();
  • 相关阅读:
    中文字符串怎么按拼音比较大小(转)
    C语言的面向对象技术(转)
    学校网又不行了哇。人人也上不了了。
    POJ2255Tree Recovery
    myeclipse无法编译java源文件(转)
    SQL语句中JOIN的用法(转)
    POJ3094Quicksum
    ssh_exchange_identification: Connection closed by remote host 问题的解决 (转)
    56视频网除了广告都看不了了
    java实现微信扫一扫详解
  • 原文地址:https://www.cnblogs.com/jiemao/p/2708135.html
Copyright © 2020-2023  润新知