首页 > 代码库 > JS 获取当前操作系统类型,浏览器,终端类型的工具

JS 获取当前操作系统类型,浏览器,终端类型的工具

总结了一个JavaScript获取当前终端类型(pc, mobile),操作系统类型,浏览器类型,浏览器版本的小工具。

个人觉得还行,测试过没有问题,能识别ie7以及以上。

/**
	author: Weihuan
	date: 2017-6-26
**/
var _AgentInfo = {
	deviceType: "",  // pc or mobile
	OSname: "",			// windows, Android, linux and so on...
	browserName: "", 	//  chrome, safari, firefox, IE and so on...
	browserVer: "",   //  browser version, important if in IE environment.
	adaptType: 0,			// A type value, Adapt to the screen due to width
	_init: function(){
		_AgentInfo.setDeviceAndOS();
		_AgentInfo.setBrowser();
	},
	setDeviceAndOS: function(){
		var name = "unknown";
		if(window.navigator.userAgent.indexOf("Android") != -1){
			name = "Android";
		}else if(window.navigator.userAgent.indexOf("iPhone") != -1){
			name = "iPhone";
		}else if(window.navigator.userAgent.indexOf("SymbianOS") != -1){
			name = "SymbianOS";
		}else if(window.navigator.userAgent.indexOf("Windows Phone") != -1){
			name = "Windows Phone";
		}else if(window.navigator.userAgent.indexOf("iPad") != -1){
			name = "iPad";
		}else if(window.navigator.userAgent.indexOf("iPod") != -1){
			name = "iPod";
		}
		if(name != "unknown"){
			_AgentInfo.OSname = name;
			_AgentInfo.deviceType = "mobile";
			return;
		}
		if (window.navigator.userAgent.indexOf("Windows NT 10.0")!= -1){
			name="Windows 10";
		}else if (window.navigator.userAgent.indexOf("Windows NT 6.2") != -1){
	 		name="Windows 8";
		}else if (window.navigator.userAgent.indexOf("Windows NT 6.1") != -1){
			name="Windows 7";
		}else if (window.navigator.userAgent.indexOf("Windows NT 6.0") != -1){
			name="Windows Vista";
		}else if (window.navigator.userAgent.indexOf("Windows NT 5.1") != -1){
			name="Windows XP";
		}else if (window.navigator.userAgent.indexOf("Windows NT 5.0") != -1){
			name="Windows 2000";
		}else if (window.navigator.userAgent.indexOf("Mac") != -1){
			name="Mac/iOS";
		}else if (window.navigator.userAgent.indexOf("X11") != -1){
			name="UNIX";
		}else if (window.navigator.userAgent.indexOf("Linux") != -1){
			name="Linux";
		}
		_AgentInfo.OSname = name;
		_AgentInfo.deviceType = "pc";
	},
	setBrowser: function(){
		var nAgt = navigator.userAgent;
		var browserName  = navigator.appName;
		var fullVersion  = ‘‘+parseFloat(navigator.appVersion);
		var majorVersion = parseInt(navigator.appVersion,10);
		var nameOffset,verOffset,ix;
		if ((verOffset=nAgt.indexOf("Opera"))!=-1) { // In Opera, the true version is after "Opera" or after "Version"
		 browserName = "Opera";
		 fullVersion = nAgt.substring(verOffset+6);
		 if ((verOffset=nAgt.indexOf("Version"))!=-1)
			 fullVersion = nAgt.substring(verOffset+8);
		}
		else if ( (nAgt.indexOf("Trident"))!=-1 ) {   // ( ver >= ie7) In MSIE, the true version is after "MSIE" in userAgent
			if((verOffset=nAgt.indexOf("MSIE"))!=-1){
				fullVersion = nAgt.substring(verOffset+5);
			}else {
				fullVersion = ‘11.0‘;
			}
			if(fullVersion == 5){
				fullVersion = "11.0";
			}
			browserName = "IE";
		}
		else if ((verOffset=nAgt.indexOf("Chrome"))!=-1) {  // In Chrome, the true version is after "Chrome"
		 browserName = "Chrome";
		 fullVersion = nAgt.substring(verOffset+7);
		}
		else if ((verOffset=nAgt.indexOf("Safari"))!=-1) {   // In Safari, the true version is after "Safari" or after "Version"
		 browserName = "Safari";
		 fullVersion = nAgt.substring(verOffset+7);
		 if ((verOffset=nAgt.indexOf("Version"))!=-1)
			 fullVersion = nAgt.substring(verOffset+8);
		}
		else if ((verOffset=nAgt.indexOf("Firefox"))!=-1) {    // In Firefox, the true version is after "Firefox"
		 browserName = "Firefox";
		 fullVersion = nAgt.substring(verOffset+8);
		}
		else if ( (nameOffset=nAgt.lastIndexOf(‘ ‘)+1) < (verOffset=nAgt.lastIndexOf(‘/‘)) ){   // In most other browsers, "name/version" is at the end of userAgent
		 browserName = nAgt.substring(nameOffset,verOffset);
		 fullVersion = nAgt.substring(verOffset+1);
		 if (browserName.toLowerCase()==browserName.toUpperCase()) {
			browserName = navigator.appName;
		 }
		}
		if ((ix=fullVersion.indexOf(";"))!=-1)		  // trim the fullVersion string at semicolon/space if present
			 fullVersion=fullVersion.substring(0,ix);
		if ((ix=fullVersion.indexOf(" "))!=-1)
			 fullVersion=fullVersion.substring(0,ix);
		majorVersion = parseInt(‘‘+fullVersion,10);
		if (isNaN(majorVersion)) {
		 fullVersion  = ‘‘+parseFloat(navigator.appVersion);
		 majorVersion = parseInt(navigator.appVersion,10);
		}
		_AgentInfo.browserName = browserName;
		_AgentInfo.browserVer = fullVersion;
	},
	isMobile: function(){
		if(_AgentInfo.deviceType == "mobile"){
			return true;
		}
		return false;
	},
	setAdaptType(){    	// A type value, Adapt to the screen due to width. For convenient
		if(screen.width <= 374){
			_AgentInfo.adaptType = 0;
		}else if(screen.width <= 413){
			_AgentInfo.adaptType = 1;
		}else {
			_AgentInfo.adaptType = 2;
		}
	}
}
_AgentInfo._init();

  

JS 获取当前操作系统类型,浏览器,终端类型的工具