language/jquery
browser.msie 정의되지 않음 또는 null 참조인 'msie' 속성을 가져올 수 없습니다.
CofS
2016. 12. 15. 16:15
정의되지 않음 또는 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 |
끝
아 버전업 하기싫어서 생략하다가 삽질할뻔했네 ㅋㅋㅋ