什么是$ .browser的替代品

Roc*_*cky 48 jquery browser-detection

jQuery文档标记$.browser为已弃用.那它有什么替代品呢?

tak*_*ien 32

基于jQuery迁移插件,我找到了这个.

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"
    };
};
if ( !jQuery.browser ) {
    var 
    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;
}
Run Code Online (Sandbox Code Playgroud)

  • 谢谢你真的回答了这个问题. (4认同)
  • 是的,这绝对可以作为旧插件的补丁。(并回答问题) (2认同)

kap*_*apa 23

如果你真的需要好旧的$ .browser

根据文档,此功能在1.3中已弃用,并在1.9中完全删除,尽管它仍可在官方jQuery Migrate插件中使用.

如果你想做得对

根据浏览器检测不是一个好主意.特征检测是要走的路(Modernizr是一个很好的工具).jQuery有一种$.support()提供某些功能检测的方法,但它现在也被弃用了.他们还建议使用Modernizer.

如果你真的需要浏览器检测

修复浏览器怪癖不是浏览器检测的有效用例,但还有其他用例.使用任何Javascript浏览器检测工具(如bowser),因为此功能根本不依赖于jQuery.

  • 你错了@bažmegakapa,有浏览器错误,比如`window.onload事件不会在chrome中触发,所以我们需要通过浏览器检测来桥接它们. (6认同)