找不到jQuery $ .browser函数的5种方法

好的,因此现在正式宣布$ .browser函数已被弃用 我们做什么? 不要惊慌, 下面5种可能的解决方案供您自由选择。 来自仓库的GitHub消息确实说明了一切:

“不再维护此存储库未激活。 如果需要$ .browser,请使用jQuery Migrate插件,重写代码或直接使用usenavigator.userAgent。”

那么为什么要删除$ .browser?

大多数开发人员在开始看到错误出现时首先想到的是: “到底怎么了,为什么要删除$ .browser?” 好吧,让我解释一下一些可能的原因。 因为$ .browser使用navigator.userAgent来确定平台,所以它容易受到用户的欺骗或浏览器本身的虚假陈述 始终最好尽可能完全避免使用特定于浏览器的代码。 $ .support属性可用于检测对特定功能的支持,而不是依赖$ .browser 。

可用标志为:

  • webkit(从jQuery 1.4开始)
  • 野生动物园(已淘汰)
  • 歌剧
  • msie(请注意,IE8在兼容性视图中声称是7)
  • Mozilla

解决方案1 ​​–迁移jQuery

使用jQuery Migrate插件将jQuery的 早期版本升级到jQuery1.9.x 。 这是全部迁移的$ .browser代码:

jQuery.uaMatch = function( ua ) {
        ua = ua.toLowerCase();

        var match = /(chrome)[ /]([w.]+)/.exec( ua ) ||
                /(webkit)[ /]([w.]+)/.exec( ua ) ||
                /(opera)(?:.*version|)[ /]([w.]+)/.exec( ua ) ||
                /(msie) ([w.]+)/.exec( ua ) ||
                ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([w.]+)|)/.exec( ua ) ||
                [];

        return {
                browser: match[ 1 ] || "",
                version: match[ 2 ] || "0"
        };
};

// Don't clobber any existing jQuery.browser in case it's different
if ( !jQuery.browser ) {
        matched = jQuery.uaMatch( navigator.userAgent );
        browser = {};

        if ( matched.browser ) {
                browser[ matched.browser ] = true;
                browser.version = matched.version;
        }

        // Chrome is Webkit, but Webkit is also Safari.
        if ( browser.chrome ) {
                browser.webkit = true;
        } else if ( browser.webkit ) {
                browser.safari = true;
        }

        jQuery.browser = browser;
}

// Warn if the code tries to get jQuery.browser
migrateWarnProp( jQuery, "browser", jQuery.browser, "jQuery.browser is deprecated" );
[/js]

Solution 2 - Use Modernizr Use Modernizr to utilise feature detection, HTML5/CSS3 etc... instead of basic browser detection. I think Modernizr is great! 找不到jQuery $ .browser函数的5种方法_第1张图片

Solution 3 - Use jQuery.Support

Use the new $.support to utilise feature & bug detection. Once again jQuery does all the hard work and performs tests on browser and stores results on the jQuery.support object (every page load by default). We can then simple query this object to determine is a feature is available to use or not. For example to check for opacity support simply do this: [js] if (jQuery.support.opacity) { //opacity you may do... }

解决方案4 –使用JavaScript /手动检测

使用以下JavaScript代码段检测浏览器和版本。 Quirksmode具有相当广泛的JavaScript浏览器/设备检测对象 ,可能被证明是有用的。

 /*
        Internet Explorer sniffer code to add class to body tag for IE version.
        Can be removed if your using something like Modernizr.
    */
    var ie = (function ()
    {

        var undef,
        v = 3,
            div = document.createElement('div'),
            all = div.getElementsByTagName('i');

        while (
        div.innerHTML = ' 
     ',
        all[0]);

        //append class to body for use with browser support
        if (v > 4)
        {
            $('body').addClass('ie' + v);
        }

    }()); 

解决方案5 –预防/通知

只需通知用户他们正在使用的jQuery版本不支持$ .browser函数。 可能不会推荐此解决方案,因为它对可用性没有任何帮助,但可用于阻止某些插件。 我建议使用Migrate插件的开发人员版本,该版本可打开信息调试功能

var undef;
    if ($.browser == undef) {
      message = [];
      message.push("WARNING: you appear to be using a newer version of jquery which does not support the $.browser variable.");
      message.push("The jQuery iframe auto height plugin relies heavly on the $.browser features.");
      message.push("Install jquery-browser: https://raw.github.com/jquery/jquery-browser/master/src/jquery.browser.js");
      alert(message.join("n"));
      return $;
    }

来源: https : //raw.github.com/house9/jquery-iframe-auto-height/master/release/jquery.iframe-auto-height.plugin.1.9.1.js

一如既往地欢迎您提出意见,建议和改进。

From: https://www.sitepoint.com/fix-jquery-browser-function/

你可能感兴趣的:(找不到jQuery $ .browser函数的5种方法)