由于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"
};
}