QWrap的浏览器检测
有时需要根据不同的浏览器,做不同的事。
这就需要我们对浏览器以及版本作检测。
QWrap的Browser主要代码如下。
var QW={};
/**
* @class Browser js的运行环境,浏览器以及版本信息。(Browser仅基于userAgent进行嗅探,存在不严谨的缺陷。)
* @singleton
* @namespace QW
*/
QW.Browser=function(){
var na = window.navigator,
ua = na.userAgent.toLowerCase(),
browserTester = /(msie|webkit|gecko|presto|opera|safari|firefox|chrome|maxthon)[ \/]([\d.]+)/ig,
Browser = {platform: na.platform};
ua.replace(browserTester,function(a,b,c){
var bLower=b.toLowerCase();
Browser[bLower]=c;
});
if(Browser.opera) {//Opera9.8后版本号位置变化
ua.replace(/opera.*version\/([\d.]+)/, function(a,b){Browser.opera=b;});
}
if(Browser.msie){
Browser.ie = Browser.msie;
var v = parseInt(Browser.msie);
Browser.ie6 = v==6;
Browser.ie7 = v==7;
Browser.ie8 = v==8;
Browser.ie9 = v==9;
}
return Browser;
}();
if(QW.Browser.ie){try{document.execCommand("BackgroundImageCache",false,true);}catch(e){}}
测试代码:
View Code
<html>
<body>
<script>
var QW={};
/**
* @class Browser js的运行环境,浏览器以及版本信息。(Browser仅基于userAgent进行嗅探,存在不严谨的缺陷。)
* @singleton
* @namespace QW
*/
QW.Browser=function(){
var na = window.navigator,
ua = na.userAgent.toLowerCase(),
browserTester = /(msie|webkit|gecko|presto|opera|safari|firefox|chrome|maxthon)[ \/]([\d.]+)/ig,
Browser = {platform: na.platform};
ua.replace(browserTester,function(a,b,c){
var bLower=b.toLowerCase();
Browser[bLower]=c;
});
if(Browser.opera) {//Opera9.8后版本号位置变化
ua.replace(/opera.*version\/([\d.]+)/, function(a,b){Browser.opera=b;});
}
if(Browser.msie){
Browser.ie = Browser.msie;
var v = parseInt(Browser.msie);
Browser.ie6 = v==6;
Browser.ie7 = v==7;
Browser.ie8 = v==8;
Browser.ie9 = v==9;
}
return Browser;
}();
if(QW.Browser.ie){try{document.execCommand("BackgroundImageCache",false,true);}catch(e){}}
</script>
<script>
function print(o) {
var html=[];
for(var i in o) html.push('('+(typeof o[i])+') '+i+' : '+o[i]);
document.write(html.join('<br/>'));
}
print(QW.Browser);
</script>
</body>
</html>
检测结果如下: