js识别不同浏览器基于userAgent做判断
检测浏览器,注意浏览器判断顺序,主要是基于userAgent做判断。
//检测浏览器
varclient=function(){
varengine={
ie:0,
gecko:0,
webkit:0,
khtml:0,
opera:0,
ver:null
};
varbrowser={
//浏览器
ie:0,
firefox:0,
safari:0,
konq:0,
opera:0,
chrome:0,
ver:null
};
varua=navigator.userAgent;
//浏览器检测有顺序
if(window.opera){//opera伪装,所以优先检测
engine.ver=browser.ver=window.opera.version();
engine.opera=browser.opera=parseFloat(engine.ver);
}elseif(/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);
}elseif(/Version\/(\S+)/.test(ua)){
browser.ver=RegExp["$1"];
browser.safari=parseFloat(browser.ver);
}else{
//近似地确定版本号
varsafariVersion=1;
if(engine.webkit<100){
safariVersion=1;
}elseif(engine.webkit<312){
safariVersion=1.2;
}elseif(engine.webkit<412){
safariVersion=1.3;
}else{
safariVersion=2;
}
browser.safari=browser.ver=safariVersion;
}
}elseif(/KHTML\/(\S+)/.test(ua)||/Konqueror\/([^;]+)/.test(ua)){
engine.ver=browser.ver=RegExp["$1"];
engine.khtml=browser.konq=parseFloat(engine.ver);
}elseif(/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);
}
}elseif(/MSIE([^;]+)/.test(ua)){
engine.ver=browser.ver=RegExp["$1"];
engine.ie=browser.ie=parseFloat(engine.ver);
}
return{
engine:engine,
browser:browser
};
}();
//调用
if(client.engine.webkit){//ifit'sWebKit
if(client.browser.chrome){
//执行针对Chrome的代码
}elseif(client.browser.safari){
//执行针对Safari的代码
}
}elseif(client.engine.gecko){
if(client.browser.firefox){
//执行针对Firefox的代码
}else{
//执行针对其他Gecko浏览器的代码
}
}