代码改变世界

redFox.核心之 浏览器探测

2011-03-30 07:51  毛狮子  阅读(553)  评论(0编辑  收藏  举报

  在redFox核心框架中通过正则匹配对navigator.userAgent来获取浏览器内核和版本信息。虽然此方法已经不是完美的方案,但总体还是可行的。至少能应用在大部分中,由于我还未了解过各浏览器的特性方面的东西,所以现在就先用此方案来完成此工作。不多说,直接看下面代码吧

//#NEWBLOCK

	//!获取浏览器类型和版本号,通过navigator.userAgent来获取
	BROWERS =	(function(UA,name,ver,iver,tmp,isIE,ename,ever){
		//匹配浏览器类型
		tmp		=	/\b(opera|msie|firefox|chrome|maxthon|safari).([\d\.]*)\b/i.exec(UA)||[];
		name	=	(tmp[1]||"unknown").toLowerCase();
		//浏览器版本号
		ver		=	(name=="safari"||name=="opera"?/\bVersion.([\d\.]*)\b/i.exec(UA)[1]:tmp[2])||"unknown";
		iver	=	parseInt(ver);
		isIE	=	name=="msie";
		//匹配浏览器内核引擎
		tmp		=	/\b(presto|gecko|khtml|webkit)\/([\d\.]*)\b/i.exec(UA)||[];
		ename	=	(tmp[1]||"unknow").toLowerCase();
		ever	=	tmp[2]||"unknow";
		/*//匹配脚本运行平台
		tmp		=	(/\b(win|mac|adobeair|X11|linux)/i.exec(UA)||[]);
		tmp		=	(tmp[1]||"unknown").toLowerCase();*/
		return {
			UA			:	UA,							//userAgent
			name		:	name,						//浏览器类型
			ver			:	ver,						//浏览器版本号
			isIE		:	isIE,						//如果是IE浏览器
			"isIE-"		:	isIE&&iver<6,				//如果是IE浏览器,并版本号小于4的
			isIE6		:	isIE&&iver==6,				//如果是IE浏览器,并版本号是6的
			isIE7		:	isIE&&iver==7,				//如果是IE浏览器,并版本号是7的
			isIE8		:	isIE&&iver==8,				//如果是IE浏览器,并版本号是8的
			isIE9		:	isIE&&iver==9,				//如果是IE浏览器,并版本号是9的
			isOpera		:	name=="opera",				//如果是Opera浏览器
			isFireFox	:	name=="firefox",			//如果是FierFox浏览器
			isSafari	:	name=="safari",				//如果是Safari浏览器
			isChrome	:	name=="chrome",				//如果是chrome浏览器	
			isMaxthon	:	name=="maxthon",			//如果是maxthon浏览器
			isGecko		:	ename=="gecko",				//如果是gecko内核
			isWebkit	:	ename=="webkit",			//如果是webkit内核
			isKHTML		:	ename=="khtml",				//如果是khtml内核
			isPresto	:	ename=="presto",			//如果是presto内核
			/*isWindows	:	tmp=="win",					//如果是windows系统
			isMac		:	tmp=="mac",					//如果是Mac系统 
			isAir		:	tmp=="adoberair",			//如果是Air平台
			isUnix		:	tmp=="X11",					//如果是Unix系统
			isLinux		:	tmp=="linux",				//如果是Linux系统*/
			engine		:	{name:ename,ver:ever},		//浏览器内核信息
			toString	:	function(){
				return this.name+""+this.ver;	
			}
		};
	})(navigator.userAgent);
	
//-->(^_^)<I Love redFox>(-_-)<--
最后:欢迎您,提出您保贵的建议