Web 프로그래밍/Javascript & jQuery

[Javascript & jQuery] 디바이스 정보 조회하기

2016. 12. 6. 14:29



userAgent를 가져와서 디바이스를 구분하는 함수입니다.


[Javascript 소스]

<script type="text/javascript">
// OS 버전 보기
var uanaVigatorOs = navigator.userAgent;
var AgentUserOs= uanaVigatorOs.replace(/ /g,'');
var Ostxt="";
var OSName="";
var OsVers="";

// This script sets OSName variable as follows:
// "Windows"    for all versions of Windows
// "MacOS"      for all versions of Macintosh OS
// "Linux"      for all versions of Linux
// "UNIX"       for all other UNIX flavors 
// "Unknown OS" indicates failure to detect the OS
new function() {
	var OsNo = navigator.userAgent.toLowerCase();
	jQuery.os = {
		Linux: /linux/.test(OsNo),
		Unix: /x11/.test(OsNo),
		Mac: /mac/.test(OsNo),
		Windows: /win/.test(OsNo)
	}
}

function OSInfoDev(){
	if($.os.Windows) {
		if(AgentUserOs.indexOf("WindowsCE") != -1) OSName="Windows CE";
		else if(AgentUserOs.indexOf("Windows95") != -1) OSName="Windows 95";
		else if(AgentUserOs.indexOf("Windows98") != -1) {
			if (AgentUserOs.indexOf("Win9x4.90") != -1) OSName="Windows Millennium Edition (Windows Me)" 
			else OSName="Windows 98"; 
		}
		else if(AgentUserOs.indexOf("WindowsNT4.0") != -1) OSName="Microsoft Windows NT 4.0";
		else if(AgentUserOs.indexOf("WindowsNT5.0") != -1) OSName="Windows 2000";
		else if(AgentUserOs.indexOf("WindowsNT5.01") != -1) OSName="Windows 2000, Service Pack 1 (SP1)";
		else if(AgentUserOs.indexOf("WindowsNT5.1") != -1) OSName="Windows XP";
		else if(AgentUserOs.indexOf("WindowsNT5.2") != -1) OSName="Windows 2003";
		else if(AgentUserOs.indexOf("WindowsNT6.0") != -1) OSName="Windows Vista/Server 2008";
		else if(AgentUserOs.indexOf("WindowsNT6.1") != -1) OSName="Windows 7";
		else if(AgentUserOs.indexOf("WindowsNT6.2") != -1) OSName="Windows 8";
		else if(AgentUserOs.indexOf("WindowsNT6.3") != -1) OSName="Windows 8.1";
		else if(AgentUserOs.indexOf("WindowsPhone8.0") != -1) OSName="Windows Phone 8.0";
		else if(AgentUserOs.indexOf("WindowsPhoneOS7.5") != -1) OSName="Windows Phone OS 7.5";
		else if(AgentUserOs.indexOf("Xbox") != -1) OSName="Xbox 360";
		else if(AgentUserOs.indexOf("XboxOne") != -1) OSName="Xbox One";
		else if(AgentUserOs.indexOf("Win16") != -1) OSName="Windows 3.x";
		else if(AgentUserOs.indexOf("ARM") != -1) OSName="Windows RT";
		else OSName="Windows (Unknown)";

		if(AgentUserOs.indexOf("WOW64") != -1) OsVers=" 64-bit(s/w 32-bit)";
		else if(AgentUserOs.indexOf("Win64;x64;") != -1) OsVers=" 64-bit(s/w 64-bit)";
		else if(AgentUserOs.indexOf("Win16") != -1) OsVers=" 16-bit";
		else OsVers=" 32-bit";
	} else if ($.os.Linux) {
		if(AgentUserOs.indexOf("Android") != -1) { OSName = getAndroidDevName(); }
		else if(AgentUserOs.indexOf("BlackBerry9000") != -1) OSName="BlackBerry9000";
		else if(AgentUserOs.indexOf("BlackBerry9300") != -1) OSName="BlackBerry9300";
		else if(AgentUserOs.indexOf("BlackBerry9700") != -1) OSName="BlackBerry9700";
		else if(AgentUserOs.indexOf("BlackBerry9780") != -1) OSName="BlackBerry9780";
		else if(AgentUserOs.indexOf("BlackBerry9900") != -1) OSName="BlackBerry9900";
		else if(AgentUserOs.indexOf("BlackBerry;Opera Mini") != -1) OSName="Opera/9.80";
		else if(AgentUserOs.indexOf("Symbian/3") != -1) OSName="Symbian OS3";
		else if(AgentUserOs.indexOf("SymbianOS/6") != -1) OSName="Symbian OS6";
		else if(AgentUserOs.indexOf("SymbianOS/9") != -1) OSName="Symbian OS9";
		else if(AgentUserOs.indexOf("Ubuntu") != -1) OSName="Ubuntu";
		else if(AgentUserOs.indexOf("PDA") != -1) OSName="PDA";
		else if(AgentUserOs.indexOf("NintendoWii") != -1) OSName="Nintendo Wii"; 
		else if(AgentUserOs.indexOf("PSP") != -1) OSName="PlayStation Portable";
		else if(AgentUserOs.indexOf("PS2;") != -1) OSName="PlayStation 2";
		else if(AgentUserOs.indexOf("PLAYSTATION3") != -1) OSName="PlayStation 3"; 
		else OSName="Linux (Unknown)";

		if(AgentUserOs.indexOf("x86_64") != -1) OsVers=" 64-bit";
		else if(AgentUserOs.indexOf("i386") != -1) OsVers=" 32-bit";
		else if(AgentUserOs.indexOf("IA-32") != -1) OsVers=" 32-bit";
		else OsVers="";
	} else if ($.os.Unix) {
		OSName="UNIX";
	} else if ($.os.Mac) {
		if(AgentUserOs.indexOf("iPhone") != -1) {
			if(AgentUserOs.indexOf("iPhoneOS3") != -1) OSName="iPhone OS 3";
			else if(AgentUserOs.indexOf("iPhoneOS4") != -1) OSName="iPhone OS 4";
			else if(AgentUserOs.indexOf("iPhoneOS5") != -1) OSName="iPhone OS 5";
			else if(AgentUserOs.indexOf("iPhoneOS6") != -1) OSName="iPhone OS 6";

			else OSName="iPhone";
		} else if(AgentUserOs.indexOf("iPad") != -1) {
			OSName="iPad";
		} else if(AgentUserOs.indexOf("MacOS") != -1) {
			if(AgentUserOs.indexOf("Macintosh") != -1) OSName="Macintosh";
			else if((AgentUserOs.indexOf("MacOSX10_9")||AgentUserOs.indexOf("MacOSX10.1")) != -1) OSName="Mac OS X Puma";
			else if((AgentUserOs.indexOf("MacOSX10_9")||AgentUserOs.indexOf("MacOSX10.2")) != -1) OSName="Mac OS X Jaguar";
			else if((AgentUserOs.indexOf("MacOSX10_9")||AgentUserOs.indexOf("MacOSX10.3")) != -1) OSName="Mac OS X Panther";
			else if((AgentUserOs.indexOf("MacOSX10_9")||AgentUserOs.indexOf("MacOSX10.4")) != -1) OSName="Mac OS X Tiger";
			else if((AgentUserOs.indexOf("MacOSX10_9")||AgentUserOs.indexOf("MacOSX10.5")) != -1) OSName="Mac OS X Leopard";
			else if((AgentUserOs.indexOf("MacOSX10_9")||AgentUserOs.indexOf("MacOSX10.6")) != -1) OSName="Mac OS X Snow Leopard";
			else if((AgentUserOs.indexOf("MacOSX10_9")||AgentUserOs.indexOf("MacOSX10.7")) != -1) OSName="Mac OS X Lion";
			else if((AgentUserOs.indexOf("MacOSX10_9")||AgentUserOs.indexOf("MacOSX10.8")) != -1) OSName="Mac OS X Mountain Lion";
			else if((AgentUserOs.indexOf("MacOSX10_9")||AgentUserOs.indexOf("MacOSX10.9")) != -1) OSName="Mac OS X Mavericks";
		} else {
			OSName="MacOS (Unknown)";
		}
	} else {
		OSName="Unknown OS";
	}
	var OSDev = OSName + OsVers;
	return OSDev;
}

// Android의 단말 이름을 반환
function getAndroidDevName() {
	var uaAdata = navigator.userAgent;
	var regex = /Android (.*);.*;\s*(.*)\sBuild/;
	var match = regex.exec(uaAdata);
	if(match) {
		var ver = match[1];
		var dev_name = match[2];
		return "Android " + ver + " " + dev_name;
	}

	return "Android OS";
}
</script>


[html 소스]

<script type="text/javascript">
$(window).load(function () {
	getOSInfo();
});

function getOSInfo() {
	var devName = OSInfoDev();

	if(devName.indexOf("MacOS") != -1) {
		console.log('MacOS!!');
	} else if(devName.indexOf("Android") != -1) {
		console.log('Android!!');
	}
}
</script>



[첨부파일]


Osinfo.js





[Reference]


http://www.openspc2.org/userAgent/

저작자표시 비영리 변경금지 (새창열림)

'Web 프로그래밍 > Javascript & jQuery' 카테고리의 다른 글

[Javascript & jQuery] 숫자데이터를 금액형식으로 표시 (콤마추가) + Null 체크 + 원하는 만큼 '0' 생성  (0) 2017.06.08
[Javascript & jQuery] 업로드 할 파일의 확장자, 용량 체크  (0) 2017.06.02
[Javascript & jQuery] 정규식을 이용한 데이터 체크  (1) 2017.05.25
[Javascript & jQuery] 현재 페이지의 주소 얻기 & 모바일 웹에서 많이 사용되는 스크롤이 최하단에 위치시 발생하는 함수  (0) 2017.01.02
[Javascript & jQuery] 이미지 크기에 맞게 팝업띄우기  (0) 2016.11.02
베로베로스
K's 개발이야기
베로베로스
전체
오늘
어제
  • 전체보기 (22)
    • 개발 도구 (3)
    • JAVA 프로그래밍 (3)
      • JAVA (2)
      • JSP (1)
    • Web 프로그래밍 (14)
      • CSS (1)
      • HTML (0)
      • Javascript & jQuery (8)
      • Spring Framework (4)
      • 웹디자인 (1)
    • Server 프로그래밍 (1)
      • Node.js (0)
      • 서버 개발 지식 (1)
    • 온라인 개발 강의 (0)
    • 티스토리 꾸미기 (1)

블로그 메뉴

  • 홈
  • 태그
  • 미디어로그
  • 위치로그
  • 방명록

공지사항

인기 글

태그

최근 댓글

최근 글

hELLO · Designed By 정상우.
베로베로스
[Javascript & jQuery] 디바이스 정보 조회하기
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.