jQuery 1.9.1 的改变,没有了 $.browser 转而使用 $.support

这两天看到 jQuery 升级到了 1.9.1 于是把自己网站的 jQuery 也升级了。但是发现以前的 $.browser 属性没有了。原来新的 jQuery 1.9.1 不再支持这个方法了。转而推荐使用 $.support。引用 jQuery 官方网站的说法:

Rather than using $.browser to detect the current user agent and alter the page presentation based on which browser is running, it is a good practice to use feature detection. To make this process simpler, jQueryperforms many such tests and sets properties of the jQuery.support object.

唉!现在希望大家使用 feature detection,不过个人感觉 jQuery 做得有点太激进了,都不向后兼容了。以前使用 $.browser 探测浏览器的程序,现在运行时都会出错了。我这里把以前的 $.browser 的代码还是找到贴出来,方便需要使用浏览器探测的朋友使用吧:

(function($) {
    var a, b;
    $.uaMatch = function(a) {
        a = a.toLowerCase();
        var b = /(chrome)[ \/]([\w.]+)/.exec(a) || /(webkit)[ \/]([\w.]+)/.exec(a) || /(opera)(?:.*version|)[ \/]([\w.]+)/.exec(a) || /(msie) ([\w.]+)/.exec(a) || a.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(a) || [];
        return {
            browser: b[1] || "",
            version: b[2] || "0"
        }
    },
    a = $.uaMatch(navigator.userAgent),
    b = {},
    a.browser && (b[a.browser] = !0, b.version = a.version),
    b.chrome ? b.webkit = !0 : b.webkit && (b.safari = !0),
    $.browser = b,
    $.sub = function() {
        function a(b, c) {
            return new a.fn.init(b, c)
        }
        $.extend(!0, a, this),
        a.superclass = this,
        a.fn = a.prototype = this(),
        a.fn.constructor = a,
        a.sub = this.sub,
        a.fn.init = function c(c, d) {
            return d && d instanceof p && !(d instanceof a) && (d = a(d)),
            $.fn.init.call(this, c, d, b)
        },
        a.fn.init.prototype = a.fn;
        var b = a(e);
        return a
   };
})(jQuery);

你可能感兴趣的:(JavaScript,JQuery)