프로그래밍/CSS & JS & Jquery
자바스크립트(javascript)에서 브라우저의 종류와 버전 알아내기
jbee
2019. 9. 17. 21:46
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
반응형