jQuery文档将$.browser
标记为已弃用。那么什么是它的替代品?
答案 0 :(得分:32)
基于jQuery migration plugin,我发现了这一点。
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;
}
答案 1 :(得分:23)
根据docs,此功能已在 1.3 中弃用, 并在 1.9 中完全删除,但official jQuery Migrate plugin中仍然可以使用。
取决于browser detection是not a good idea。功能检测是可行的方法(Modernizr是一个很好的工具)。 jQuery有一个$.support()
方法来提供一些功能检测,但它现在也被弃用了。 They also suggest using Modernizer.
修复浏览器怪癖不是浏览器检测的有效用例,但还有其他用例。使用任何Javascript浏览器检测工具(如bowser),因为此功能根本不依赖于jQuery。
答案 2 :(得分:3)
没有直接替代品。您应该使用功能检测而不是浏览器检测(您是否有充分的理由需要了解浏览器?),因此您可以使用$.support
property。 (它在{d} $.browser
的API doco中说得很多。)
答案 3 :(得分:2)
答案 4 :(得分:1)
你可以使用javascript中的navigator变量
console.log(navigator)
但如果要使用jquery函数检查兼容性,可以使用支持var
$.support.ajax
答案 5 :(得分:1)
jquery-browser-plugin是一个很好的替代