jQuery文档已经将
$.browser
标记为过时。那么它的替代品是什么?基于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;
}
$.browser
的遗留代码的站点,则不幸的是,直到旧代码被删除之前,这个答案是可行的。 - razzed根据文档, 这个特性在1.3版本中被弃用,并在1.9版本中完全删除,尽管它仍然可以在官方jQuery Migrate插件中使用。
依赖于浏览器检测 不是一个好主意。特性检测才是正确的方式(Modernizr是一个很好的工具)。jQuery曾经有一个$.support()
方法来提供一些特性检测,但现在也已经过时了。他们还建议使用Modernizer。
修复浏览器问题并非浏览器检测的有效用例,但还有其他用例。使用任何JavaScript浏览器检测工具(如bowser),因为此功能完全不依赖于jQuery。
window.onload
事件在Chrome中无法触发,所以我们需要通过浏览器检测来解决这些问题。 - Lajos Mészáros没有直接的替代方法。您应该使用功能检测而不是浏览器检测(您是否有需要知道浏览器的充分理由?),因此您可以使用$.support
属性。(在$.browser
的API文档中也有这样的说明。)
你可以使用 JavaScript 中的 navigator 变量。
console.log(navigator)
但是如果你想检查 jQuery 函数的兼容性,可以使用 support 变量,例如:
$.support.ajax
jQuery
方法,但是 css hacks 可能对你有用。 - Lix