Jquery 1.9.0 以上版本 扩展使用 $.browser 方法

时间:2024-10-21 09:04:52


由于jquery 1.9.0 以上版本 jquery去掉了对 $.browser 的支持,采用$.support 来判断浏览器类型。导致之前的很多插件报错

"Uncaught TypeError: Cannot read property 'msie' of undefined".


网上有很多解决办法如:

判断浏览器类型:

<span style="white-space:pre">	</span>$. = /firefox/.test(());
	$. = /webkit/.test(());
	$. = /opera/.test(());
	$. = /msie/.test(());


号后面的表达式返回的就是 true/false, 可以直接用来替换原来的 $. 等。


检查是否为 IE6:
// Old
<span style="white-space:pre">	</span>if ($. && 7 > $.) {}
// New
<span style="white-space:pre">	</span>if ('undefined' == typeof()) {}
检查是否为 IE 6-8:
<span style="white-space:pre">	</span>if (!$.) {}


**************************************************************************

下面  我们采取的思路是 使用jquery的继承机制 对jquery 1.11.1版本 进行扩展 使其支持 $.browser 方法,已达到兼容之前组件的目的.

({
	browser: function() 
	{
		var
	    rwebkit = /(webkit)\/([\w.]+)/,
	    ropera = /(opera)(?:.*version)?[ \/]([\w.]+)/,
	    rmsie = /(msie) ([\w.]+)/,
	    rmozilla = /(mozilla)(?:.*? rv:([\w.]+))?/,    
	    browser = {},
	    ua = ,
	    browserMatch = uaMatch(ua);

	    if () {
	        browser[] = true;
	         = ;
	    }
	    return { browser: browser };
	},
});

function uaMatch(ua) 
{
        ua = ();

        var match = (ua)
                    || (ua)
                    || (ua)
                    || ("compatible") < 0 && (ua)
                    || [];

        return {
            browser : match[1] || "",
            version : match[2] || "0"
        };
}


将以上代码 保存成 jquery- 使用即可。