解决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引入到页面即可.
两个方法都已测试过,可以放心用,希望能对大家有帮助.