jquery 1.9.0 이상으로 인해 jquery는 $.browser에 대한 지원을 제거하고 $.support를 사용하여 브라우저 유형을 결정합니다. 그 결과, 많은 이전 플러그인에서 오류를 보고했습니다
"Uncaught TypeError: Cannot read property 'msie' of undefine".
온라인에는 다음과 같은 다양한 솔루션이 있습니다.
브라우저 결정 유형:
숫자
<span style="white-space:pre"> </span>$.browser.mozilla = /firefox/.test(navigator.userAgent.toLowerCase()); $.browser.webkit = /webkit/.test(navigator.userAgent.toLowerCase()); $.browser.opera = /opera/.test(navigator.userAgent.toLowerCase()); $.browser.msie = /msie/.test(navigator.userAgent.toLowerCase());
뒤의 expression은 true/false를 반환하며, 이는 원본 $.browser.msie 등을 대체하는 데 직접 사용할 수 있습니다.
IE6인지 확인하세요:
// Old
<span style="white-space:pre"> </span>if ($.browser.msie && 7 > $.browser.version) {}
// New
<span style="white-space:pre"> </span>if ('undefined' == typeof(document.body.style.maxHeight)) {}
IE 6-8인지 확인하세요:
<span style="white-space:pre"> </span>if (!$.support.leadingWhitespace) {}
* ************************************************** *** *********************
아래에서 채택한 아이디어는 jquery의 inheritance 메커니즘을 사용하여 $를 지원하도록 jquery 1.11.1 버전을 확장하는 것입니다. .browser 메소드는 이전 컴포넌트와의 호환성 목적을 달성했습니다.
jQuery.extend({ browser: function() { var rwebkit = /(webkit)\/([\w.]+)/, ropera = /(opera)(?:.*version)?[ \/]([\w.]+)/, rmsie = /(msie) ([\w.]+)/, rmozilla = /(mozilla)(?:.*? rv:([\w.]+))?/, browser = {}, ua = window.navigator.userAgent, browserMatch = uaMatch(ua); if (browserMatch.browser) { browser[browserMatch.browser] = true; browser.version = browserMatch.version; } return { browser: browser }; }, }); function uaMatch(ua) { ua = ua.toLowerCase(); var match = rwebkit.exec(ua) || ropera.exec(ua) || rmsie.exec(ua) || ua.indexOf("compatible") < 0 && rmozilla.exec(ua) || []; return { browser : match[1] || "", version : match[2] || "0" }; }
위 코드를 jquery-browser.js에 저장하고 사용하세요.
위 내용은 Jquery 확장은 $.browser 메소드를 사용합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!