The jQuery document tags $.browser
as deprecated. So what's the replacement for it?
jQuery文档将$ .browser标记为已弃用。那它有什么替代品呢?
6 个解决方案
#1
22
If you really need good old $.browser
According to the docs, this feature was deprecated in 1.3, and totally removed in 1.9, although it is still available in the official jQuery Migrate plugin.
根据文档,此功能在1.3中已弃用,并在1.9中完全删除,尽管它仍可在官方jQuery Migrate插件中使用。
If you want to do it right
Depending on browser detection is not a good idea. Feature detection is the way to go (Modernizr is a great tool for that). jQuery had a $.support()
method to provide some feature detection, but it is now deprecated as well. They also suggest using Modernizer.
根据浏览器检测不是一个好主意。特征检测是要走的路(Modernizr是一个很好的工具)。 jQuery有一个$ .support()方法来提供一些功能检测,但它现在也被弃用了。他们还建议使用Modernizer。
If you really need browser detection
Fixing browser quirks is not a valid use case for browser detection, but there are other use cases. Use any Javascript browser detection tool (like bowser), as this functionality does not depend on jQuery at all.
修复浏览器怪癖不是浏览器检测的有效用例,但还有其他用例。使用任何Javascript浏览器检测工具(如bowser),因为此功能根本不依赖于jQuery。
#2
31
Based on jQuery migration plugin , I found this.
基于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;
}
#3
3
There isn't a direct replacement. You should be using feature detection rather than browser detection (do you have a good reason to need to know the browser?), so you can use the $.support
property. (It says as much in the API doco for $.browser
.)
没有直接替代品。您应该使用功能检测而不是浏览器检测(您是否有充分的理由需要了解浏览器?),因此您可以使用$ .support属性。 (它在API doco中为$ .browser说了很多。)
#5
1
you can use navigator variable from javascript
你可以使用javascript中的navigator变量
console.log(navigator)
but if you want to check the compatiblility with a function of jquery you can use the support var like
但是如果你想用jquery函数来检查兼容性,你可以使用支持var
$.support.ajax
#1
22
If you really need good old $.browser
According to the docs, this feature was deprecated in 1.3, and totally removed in 1.9, although it is still available in the official jQuery Migrate plugin.
根据文档,此功能在1.3中已弃用,并在1.9中完全删除,尽管它仍可在官方jQuery Migrate插件中使用。
If you want to do it right
Depending on browser detection is not a good idea. Feature detection is the way to go (Modernizr is a great tool for that). jQuery had a $.support()
method to provide some feature detection, but it is now deprecated as well. They also suggest using Modernizer.
根据浏览器检测不是一个好主意。特征检测是要走的路(Modernizr是一个很好的工具)。 jQuery有一个$ .support()方法来提供一些功能检测,但它现在也被弃用了。他们还建议使用Modernizer。
If you really need browser detection
Fixing browser quirks is not a valid use case for browser detection, but there are other use cases. Use any Javascript browser detection tool (like bowser), as this functionality does not depend on jQuery at all.
修复浏览器怪癖不是浏览器检测的有效用例,但还有其他用例。使用任何Javascript浏览器检测工具(如bowser),因为此功能根本不依赖于jQuery。
#2
31
Based on jQuery migration plugin , I found this.
基于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;
}
#3
3
There isn't a direct replacement. You should be using feature detection rather than browser detection (do you have a good reason to need to know the browser?), so you can use the $.support
property. (It says as much in the API doco for $.browser
.)
没有直接替代品。您应该使用功能检测而不是浏览器检测(您是否有充分的理由需要了解浏览器?),因此您可以使用$ .support属性。 (它在API doco中为$ .browser说了很多。)
#4
#5
1
you can use navigator variable from javascript
你可以使用javascript中的navigator变量
console.log(navigator)
but if you want to check the compatiblility with a function of jquery you can use the support var like
但是如果你想用jquery函数来检查兼容性,你可以使用支持var
$.support.ajax