100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > JavaScript高级程序设计20.pdf

JavaScript高级程序设计20.pdf

时间:2018-12-12 14:45:39

相关推荐

JavaScript高级程序设计20.pdf

用户代理检测

为了不在全局作用域中添加多余的变量,我们使用模块增强模式来封装检测脚本

以下是完整的用户代理字符串检测脚本,包括检测呈现引擎、平台、Window操作系统、移动设备和游戏系统

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,

//游戏系统

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(/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.x11=(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;

//window 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

};

}();

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。