Jquery 1.9.0以上版本报$.browser未定义的解决方法

发表时间
评论 没有

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

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

网上有很多解决办法如:

判断浏览器类型:

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

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

检查是否为IE6:

// Old 
<span style="white-space:pre">    </span>if ($.browser.msie && 7 > $.browser.version) {}  
// New 
<span style="white-space:pre">    </span>if ('undefined' == typeof(document.body.style.maxHeight)) {}  

检查是否为IE6-8:

<span style="white-space:pre">    </span>if (!$.support.leadingWhitespace) {}  

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

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

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使用即可。

作者
分类 网站建设, 电脑网络

评论

本文评论功能已关闭。

← 较早的 较新的 →

相关文章