Dev Language/JAVASCRIPT

PC, MOBILE, TABLET 디바이스타입 파악

타카스 류지 2015. 3. 17. 13:48
  //디바이스타입 파악을 위한 변수
  var MOBILE_USER_AGENT_PREFIXES = [ "w3c ", "w3c-", "acs-", "alav",
     "alca", "amoi", "audi", "avan", "benq", "bird", "blac", "blaz", "brew",
     "cell", "cldc", "cmd-", "dang", "doco", "eric", "hipt", "htc_", "inno",
     "ipaq", "ipod", "jigs", "kddi", "keji", "leno", "lg-c", "lg-d", "lg-g",
     "lge-", "lg/u", "maui", "maxo", "midp", "mits", "mmef", "mobi", "mot-",
     "moto", "mwbp", "nec-", "newt", "noki", "palm", "pana", "pant", "phil",
     "play", "port", "prox", "qwap", "sage", "sams", "sany", "sch-", "sec-",
     "send", "seri", "sgh-", "shar", "sie-", "siem", "smal", "smar", "sony",
     "sph-", "symb", "t-mo", "teli", "tim-", "tosh", "tsm-", "upg1", "upsi",
     "vk-v", "voda", "wap-", "wapa", "wapi", "wapp", "wapr", "webc", "winw",
     "winw", "xda ", "xda-" ];
  var MOBILE_USER_AGENT_KEYWORDS = [ "blackberry", "webos", "ipod",
     "lge vx", "midp", "maemo", "mmp", "netfront", "hiptop", "nintendo DS",
     "novarra", "openweb", "opera mobi", "opera mini", "palm", "psp",
     "phone", "smartphone", "symbian", "up.browser", "up.link", "wap",
     "windows ce" ];
  var TABLET_USER_AGENT_KEYWORDS = [ "ipad", "playbook", "hp-tablet" ]; 
 
  //디바이스타입 파악
  // @returns NORMAL(PC), MOBILE, TABLET
  function getDeviceType() {
   var userAgent = navigator.userAgent.toLowerCase();
   if (userAgent != null && userAgent.length > 0) {
    var tUserAgent = userAgent.slice(0, 4);
     
    for ( var i = 0; i < MOBILE_USER_AGENT_PREFIXES.length; i++) {
     if (tUserAgent.indexOf(MOBILE_USER_AGENT_PREFIXES[i], 0) != -1) {
      return 'MOBILE';
     }
    }
   }
   
   for ( var i = 0; i < MOBILE_USER_AGENT_KEYWORDS.length; i++) {
    if (userAgent.indexOf(MOBILE_USER_AGENT_KEYWORDS[i], 0) != -1) {
     return 'MOBILE';
    }
   }
   
   for ( var ii = 0; ii < TABLET_USER_AGENT_KEYWORDS.length; ii++) {
    if (userAgent.indexOf(TABLET_USER_AGENT_KEYWORDS[ii], 0) != -1) {
     return 'TABLET';
    }
   }
   
   if (userAgent.indexOf("android") != -1 && userAgent.indexOf("mobile") != -1) {
    return 'MOBILE';
   } else if (userAgent.indexOf("android") != -1
     && userAgent.indexOf("mobile") == -1) {
    return 'TABLET';
   }
   return 'NORMAL';
  } 
   
  //Parameters를 parsing
  // @returns (JSON) parameters
 function getBroadCastParam(){
  
  var param ={};
  var varName = '';
  var value = '';
  var nowAddress = decodeURIComponent(location.href);
  var parameters = '';
   
  if(nowAddress.indexOf('?') != -1){
   parameters = (nowAddress.slice(nowAddress.indexOf('?')+1,nowAddress.length)).split('&');
   for(var i = 0 ; i < parameters.length ; i++)  {
    varName = parameters[i].split('=')[0];
    value = parameters[i].split('=')[1];
    param[varName] = value;
   }
  }
   
  param["deviceType"] = getDeviceType();
  param["proxyPage"] = "Y";
   
  return param;
 }
  
 
  
 /* ★사용법★*/
  var param = getBroadCastParam();
  if (param["deviceType"] != 'MOBILE') {
      param["deviceType"] = 'NORMAL';
  }