(function ($) {
 
    $.ua = $.ua || {
        platform: {},
        browser: {},
        engine: {}
    };
 
    var ua = navigator.userAgent.toLowerCase(),
        p = $.ua.platform,
        b = $.ua.browser,
        e = $.ua.engine,
        u = 'unknown';

    //alert(navigator.userAgent);
 
    // detect platform
    p.name = (/(win|mac|linux|iphone|ipod|android)/.exec(ua) || [, u])[1];
    p[p.name] = true;
 
    // detect browser
    b.name = (/(msie|firefox|chrome|safari|opera)/.exec(ua) || [, u])[1]; // chrome must be tested before safari
    b[b.name] = true;
    b.version = (b.unknown)? 0: /(?:msie |firefox\/|chrome\/|version\/)(\d+(\.\d+)*)/.exec(ua)[1];
 
    // detect engine
    e.name = (/(trident|webkit|gecko|presto)/.exec(ua) || [, u])[1]; // webkit must be tested before gecko
    e[e.name] = true;
    e.version = (e.unknown)? 0: /(?:trident\/|rv:|webkit\/|presto\/)(\d+(\.\d+)*)/.exec(ua)[1];
 
    // add classes to html element
    $('html').addClass([
        p.name,
        b.name,
        b.name + parseInt(b.version, 10),
        e.name,
        e.name + parseInt(e.version, 10)
    ].join(' '));
 
})(jQuery);

function CastUserAgent(AgentCase) {
	var c = [], i, j;
	var d = 0;
	for (i in $.ua) {
		if (i === 'data' || i === 'init') {
			continue;
		}
		for (j in $.ua[i]) {
			d = 0;
			if (i === AgentCase) {
				if (d != 0) {
					c[c.length] = ',';
				}
				c[c.length] = '\'' + j + '\'' + ':\'' + $.ua[i][j] + '\'';
				d++;
			}
		}
	}
	c.join();
	return eval('({' + c.toString() + '})');
}

아래 CastUserAgent 함수를 추가하였다. 파라메터를 문자열 형태로 'platform, browser, engine'

로 넘겨주면 name, version 을 반환한다.

아래와 같이 호출하여 사용하면 된다.

var bw = CastUserAgent ('browser').name;
alert(bw);



인터넷 익스플로러 11 에서부터는 유저에이전트 문자열에서 MSIE 를 찾아볼 수가 없다.

난 당연히 있을거라 생각하고 IE 버젼별 작업을 하다 삽질을 하게됬는데..

하다가 짜증나서 보니.. 설마했는데..


Internet Explorer 10


Internet Explorer 11


위와 같이 문자열이 없다.. W3C 표준 DOM API 를 잘 지키겠다는 의미로는 보이는데..

그 동안 싸질러놓은 10부터는 어떡하라고.. 아 토할거 같다;; 


아래 링크가면 자세한 내용을 볼수 있다.

Internet Explorer 11 을 Internet Explorer 라고 부르지 못하고...


더보기

+ Recent posts