2

可能重复:
为什么不推荐使用 $.browser - 什么是更好的选择?

我曾经在我的 jQuery 中使用 $.browser 属性来确定浏览器。我发现它非常有帮助和有用。

我也曾与最新版本的 jQuery 相关联。像这样:

<script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script>

好吧,显然 jQuery 1.9 还没有出来,对这个属性的支持也被移除了。

有谁知道一个好的 jQuery 插件可以用作替代品?

我知道推荐的方法是使用 $.support,我有时会使用它。

但有时更容易知道某人正在使用什么浏览器。

任何人都可以帮忙吗?

4

2 回答 2

1

浏览器对象只是为您解析navigator.userAgent。如果你愿意的话,你总是可以自己解析。

没有什么能阻止您从较旧的 JQuery 版本中提取代码,然后将其放入您自己的 jquery 插件中。

Jquery 文档建议不要使用浏览器对象,甚至声明它容易受到欺骗:

因为 $.browser 使用 navigator.userAgent 来确定平台,所以它很容易受到用户的欺骗或浏览器本身的虚假陈述。在可能的情况下,最好完全避免使用特定于浏览器的代码。$.support 属性可用于检测对特定功能的支持,而不是依赖于 $.browser。

于 2013-01-16T21:47:23.620 回答
0

你总是可以找到源头。

这不是我的代码,这是改编自 jQuery 源代码

演示:http: //jsfiddle.net/KKwqU/

js:

function ExtendJqueryBrowser(){

 jQuery.extend({browser:{}});

 function uaMatch(ua){
     ua = ua.toLowerCase();
     var rwebkit = /(webkit)[ \/]([\w.]+)/,
     ropera = /(opera)(?:.*version)?[ \/]([\w.]+)/,
     rmsie = /(msie) ([\w.]+)/, 
     rmozilla = /(mozilla)(?:.*? rv:([\w.]+))?/;
     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" };
 }

    var browserMatch = uaMatch( navigator.userAgent );
    if ( browserMatch.browser ) {
     jQuery.browser[ browserMatch.browser ] = true;
     jQuery.browser.version = browserMatch.version;
    }

    // Deprecated, use jQuery.browser.webkit instead
    if ( jQuery.browser.webkit ) {
     jQuery.browser.safari = true;
    }
}
于 2013-01-16T21:57:43.533 回答