1. 程式人生 > >jquery Autocomplete 實現自動補全(四)解決jquery 高版本不支援browser方法

jquery Autocomplete 實現自動補全(四)解決jquery 高版本不支援browser方法

解決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引入到頁面即可.

兩個方法都已測試過,可以放心用,希望能對大家有幫助.