解决jquery 高版本不支持browser方法
前几篇的例子是在 jquery 版本1.7.1 下使用的都没问题,但最近在我们的项目中jquery版本换成了 1.9 ,运行后发现不能实现自动补全功能了。后来在网上找了很多资料,才发现 juqery Autocomplete 插件依赖于jquery 1.2.6 到 jquery 1.8.3 的版本,对于jquery1.9 以上的版本不支持,1.9以上的版本去掉了 browser方法,所以要想在jquery1.9 版本以上继续使用 autocomplete 插件,通过实践我找到两种解决方法,这两种方法都可以用,具体如下:
1. 在autocomplete.js里面加代码
在 autocomplete.js 中,最上面增加 $.browser = navigator.userAgent; 即可. 如下图所示:
2. 利用 jquery 扩展性,创建一个 jquery-browser.js
可以利用的扩展性,创建一个高版本支持browser 的 JS,具体内容如下:
/*
* jQuery Autocomplete plugin 1.1
* Revision: $Id: jquery-browser.js 15 2015-08-22 10:30:27Z joern.zaefferer $
*/
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文件,再将上面代码复制到这个JS文件中,使用时将jquery-browser.js引入到页面即可.
两个方法都已测试过,可以放心用,希望能对大家有帮助.