본문 바로가기

자바스크립트(javascript)에서 브라우저의 종류와 버전 알아내기

728x90
반응형

코드는 jQuery이다.

browser = (function(){
 var a = navigator.userAgent.toLowerCase();
 var b,v;

 if(a.indexOf("safari/") > -1) {
  b = "safari";
  var s = a.indexOf("version/");
  var l = a.indexOf(" ", s);
  v = a.substring(s+8, l);
 }
 if(a.indexOf("chrome/") > -1) {
  b = "chrome";
  var ver = /[ \/]([\w.]+)/.exec(a)||[];
  v = ver[1];
 }
 if(a.indexOf("firefox/") > -1) {
  b = "firefox";
  var ver = /(?:.*? rv:([\w.]+)|)/.exec(a)||[];
  v = ver[1];
 }
 if(a.indexOf("opera/") > -1) {
  b = "opera";
  var ver = /(?:.*version|)[ \/]([\w.]+)/.exec(a)||[];
  v = ver[1];
 }
 if((a.indexOf("msie") > -1) || (a.indexOf(".net") > -1)) {
  b = "msie";
  var ver = /(?:.*? rv:([\w.]+))?/.exec(a)||[];
  if(ver[1])
   v = ver[1];
  else{
   var s = a.indexOf("msie");
   var l = a.indexOf(".", s);
   v = a.substring(s+4, l);
  }
 }
 return { name: b || "", version: v || 0};
}()); 

jquery-1.10.x부터 $.browser를 사용 할 수 없게 됐습니다. 왜 뺐는지는 모르겠지만 아마도 IE의 잦은 변덕 때문이 아닌가 추측 됩니다. userAgent 값이 IE11부터 느닷없이 바뀌어 버립니다. 버전 정보에 msie가 있으면 IE인가 보다 했는데 msie 문자가 빠져서 IE를 분별 할 수 있는 마땅한 단어가 없습니다. 그래서 mozilla로 분류가 되는데 암튼 그런 것들을 다 감안해서 조금은 무식한 방법으로 만들어 봤습니다.

다른 건 문제가 안 되는데 IE는 .net 버전이 userAgent에 포함 되어 있어서 IE11 부터는 .net을 포함하는지로 구분했습니다.

browser.name : 브라우저 이름
browser.version : 브라우저 버전 
728x90
반응형