>  기사  >  웹 프론트엔드  >  Jquery 확장은 $.browser 메소드를 사용합니다.

Jquery 확장은 $.browser 메소드를 사용합니다.

巴扎黑
巴扎黑원래의
2017-07-08 10:00:531798검색

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 (&#39;undefined&#39; == 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.