识别呈现引擎、浏览器版本和操作平台

高级程序书第238~240页有详解
转载自:https://blog.csdn.net/danzhang1010/article/details/25028149

<!DOCTYPE html>
<html>
<head>
<meta charset='utf-8'>

<title>检测浏览器呈现引擎版本和浏览器版本</title>
<script type="text/javascript">

var client=function(){
var UA=navigator.userAgent;
document.write(UA+"<BR>");
var PF=navigator.platform;
var engines={
ie:0,
webkit:0,
khtml:0,
gecko:0,
opera:0,
ver:null
};
var browsers={
ie:0,
chrome:0,
safari:0,
konqueror:0,
firefox:0,
opera:0,
ver:null
};
var platform={
win:false,
mac:false,
linux:false,
iphone:false,
ipod:false,
ipad:false,
ios:false,
android:false,
nokiaN:false,
winMobile:false
};
if(window.opera){
browsers.ver= engines.ver=window.opera.version();
browsers.opera=engines.opera=parseFloat(engines.ver);
}else if(/AppleWebKit/(\S+)/.test(UA)){//说明是webkit引擎,使用webkit引擎的有chrome,safari,和opera

        engines.ver=RegExp["$1"];
        engines.webkit=parseFloat(engines.ver);
        if(/OPR\/(\S+)/.test(UA)){                  
            browsers.ver=RegExp["$1"];                  
            browsers.opera=parseFloat(browsers.ver);
        }
        else if(/Version\/(\S+)/.test(UA)){
            browsers.ver=RegExp["$1"];
            browsers.safari=parseFloat(browsers.ver);
        }else if(/Chrome\/(\S+)/.test(UA)){
            browsers.ver=RegExp["$1"];
            browsers.chrome=parseFloat(browsers.ver);
        }

    }else if(/KHTML\/(\S+)/.test(UA)||/Konqueror\/([^;]+)/.test(UA)){
      browsers.ver=engines.ver=RegExp["$1"];
      browsers.konqueror=engines.khtml=parseFloat(engines.ver);

    }else if(/rv\:([^\)]+)\) Gecko\/\d{8}/.test(UA)){
        engines.ver=RegExp["$1"];
        engines.gecko=parseFloat(engines.ver);
        if(/Firefox\/(\S+)/.test(UA)){
            browsers.ver=RegExp["$1"];
            browsers.firefox=parseFloat(browsers.ver);
        }
    }
    else if(/Trident\/([^;]+)/.test(UA)){
        browsers.ver=engines.ver=parseFloat(RegExp["$1"])+4.0;
        engines.ie=browsers.ie=engines.ver; 
    }else if(/MSIE ([^;]+)/.test(UA)){
            browsers.ver=engines.ver=RegExp["$1"];
            engines.ie=browsers.ie=parseFloat(engines.ver);
        }

        //检测平台
        platform.win=PF.indexOf("Win")==0;
        platform.mac=PF.indexOf("Mac")==0;
        platform.linux=(PF.indexOf("x11")==0)||(PF.indexOf("Linux")==0);
        platform.iphone=UA.indexOf("iPhone")>-1;
        platform.ipod=UA.indexOf("iPod")>-1;
        platform.ipad=UA.indexOf("iPad")>-1;
        platform.nokiaN=UA.indexOf("nokiaN")>-1;
        //检测windows的版本
        if(platform.win){
            if(/Win(?:dows )?([^;\)]\S+)\s?(\d+\.\d+)?/.test(UA)){
                if(RegExp["$1"]=="NT"){
                    switch(RegExp["$2"]){
                        case '5.0':
                            platform.win='2000';
                            break;
                        case '5.1':
                            platform.win='XP';
                            break;
                        case '6.0':
                            platform.win='Vista';
                            break;
                        case '6.1':
                            platform.win='7';
                            break;
                        default:
                            platform.win='NT';
                            break;
                    }
                }else if(RegExp["$1"]=='9x'){
                    platform.win='ME';

                }else{
                    platform.win=RegExp["$1"];
                }
            }

        }
        //检测IOS版本
        if(platform.mac&&UA.indexOf('Mobile')>-1){
            if(/CPU (?:iPhone)?OS (\d_\d)/.test(UA)){
                platform.ios=parseFloat(RegExp.$1.replace("_","."));
            }else{
                platform.ios=2;
            }

        }
        //检测android版本
        if(/Android (\d+\.\d+)/.test(UA)){
            platform.android=parseFloat(RegExp["$1"]);

        }
    return {engines:engines,browsers:browsers,platform:platform};

}();
for(var t in client.engines){
document.write("engin:"+t+":"+client.engines[t]+"
");

  }

  for(var i in client.browsers){
    document.write("browsers:"+i+":"+client.browsers[i]+"<br>");
  }
  for(var tt in client.platform){
    document.write("platform:"+tt+":"+client.platform[tt]+"<br>");
  }
  
</script>

</head>
<body>
<script type="text/javascript">

</script>
</body>
</html>

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,445评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,889评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,047评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,760评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,745评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,638评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,011评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,669评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,923评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,655评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,740评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,406评论 4 320
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,995评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,961评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,023评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,483评论 2 342

推荐阅读更多精彩内容