browser.msie 정의되지 않음 또는 null 참조인 'msie' 속성을 가져올 수 없습니다.

2016. 12. 15. 16:15language/jquery

 

 

 

 정의되지 않음 또는 null 참조인 'msie' 속성을 가져올 수 없습니다.

 

 

jquery 버전을 올리다가 위와 같은 오류를 만났다.

 

감기때문에 컨디션이 안좋아 ㅠㅠ

 

어쨋든 오류 메시지 중에서 msie 속성이 없다는 것에 중점을 두고 찾아보았다.

 

msie 는 브라우저를 체크할 때 userAgent 에서 IE인지 체크하는 값이다.

 

물론 IE 11부터는 msie가 사라져 저 단어만으로 체크는 불가능하다.

 

그럼 msie 속성을 가져올 수 없다는 오류가 발생한 파일을 살펴봣다.

 

jquery-ui-1.8.11.min.js 파일이였다.

 

여기 자세히 살펴보니 이런 browser.msie 를 사용하고 있었다.

 



 

이 녀석이 무엇을 하는 녀석인지 찾아보았다.

 

검색하자마자 browser.msie 오류 어쩌구 저쩌구 하는 글들이 많이 보였다.

 

나처럼 오류가 난 사람이 많나부다.

 

글들을 읽다보니 이런 내용이 있었다.

 

 JQuery 1.8 버전 이후 $.browser 가 삭제되었다.

 

하...

 

결국 내가 잘못했네...

 

jquery 는 1.11.2 로 버전업을 했고 jquery-ui 는 버전업을 하지 않았다.

 

설마 호환되지 않는게 있을까 ? 캘린더 하나 쓰는데 라는 생각으로 ㅠㅠ

 

위 오류를 해결하는데는 몇가지가 있다.

 

하나는 버전업을 하는 방법.

 

하나는 오류 발생지점보다 상단에 다음 코드를 삽입하면 된다.

 



 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
(function () {
    var matched, browser;
 
    // Use of jQuery.browser is frowned upon.
    // More details: http://api.jquery.com/jQuery.browser
    // jQuery.uaMatch maintained for back-compat
    jQuery.uaMatch = function (ua) {
        ua = ua.toLowerCase();
 
        var match = /(chrome)[ \/]([\w.]+)/.exec(ua) ||
            /(webkit)[ \/]([\w.]+)/.exec(ua) ||
            /(opera)(?:.*version|)[ \/]([\w.]+)/.exec(ua) ||
            /(msie) ([\w.]+)/.exec(ua) ||
            ua.indexOf("compatible"< 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua) ||
            [];
 
        return {
            browser: match[1|| "",
            version: match[2|| "0"
        };
    };
 
    matched = jQuery.uaMatch(navigator.userAgent);
    browser = {};
 
    if (matched.browser) {
        browser[matched.browser] = true;
        browser.version = matched.version;
    }
 
    // Chrome is Webkit, but Webkit is also Safari.
    if (browser.chrome) {
        browser.webkit = true;
    } else if (browser.webkit) {
        browser.safari = true;
    }
 
    jQuery.browser = browser;
})();
 
cs

 

 

 

아 버전업 하기싫어서 생략하다가 삽질할뻔했네 ㅋㅋㅋ