Javascript 为什么不推荐使用$.browser?还有什么更好的选择?
所以我知道,Javascript 为什么不推荐使用$.browser?还有什么更好的选择?,javascript,jquery,browser,Javascript,Jquery,Browser,所以我知道,$。自从jQuery 1.3以来,浏览器一直被弃用和“不受欢迎”,但它仍然存在并在代码中工作 它仍然使用普通的javascript:navigator.userAgent来确定正在使用的浏览器以及版本 现在是否有一些我对navigator本身不了解的东西,我不应该使用$.browser或普通JS来获取浏览器/版本?我只是想确保当他们有IE8时(例如),他们真的有IE8,并且我没有处理错误的代码 对于浏览器嗅探,我们还有哪些替代方案?我知道$。支持,我使用Modernizer,但有
$。自从jQuery 1.3以来,浏览器一直被弃用和“不受欢迎”,但它仍然存在并在代码中工作
它仍然使用普通的javascript:navigator.userAgent
来确定正在使用的浏览器以及版本
现在是否有一些我对navigator本身不了解的东西,我不应该使用$.browser
或普通JS来获取浏览器/版本?我只是想确保当他们有IE8时(例如),他们真的有IE8,并且我没有处理错误的代码
对于浏览器嗅探,我们还有哪些替代方案?我知道$。支持,我使用Modernizer
,但有时我需要的只是浏览器版本,而不是查看浏览器能够处理什么(我认为这是一个完全不同的问题解决方案).你可以自己回答这个问题。理想情况是检查功能支持。随着越来越多的浏览器和设备进入市场,这种方法应该可以扩展
然而,如果你想做一些“下流肮脏”的事情,那么浏览器检测当然是有效的,但前提是你知道你的代码在现有的一组浏览器(甚至只是那些你测试过代码的浏览器)中工作。通常建议不要试着猜测浏览器是什么,而是检查一个功能是否可用。浏览器和变体太多
要检查函数是否可用,只需执行以下操作:
if (!Array.prototype.map) {
// not available, shut down computer !
如果一个“必须”知道哪一个浏览器对我的网页,我个人使用这个
(function() {
var re_browsers = {
firefox: /firefox\/([\d\.]+)/,
chrome: /chrome\/([\d\.]+)/,
safari: /webkit.*?version\/([\d\.]+)/,
opera: /opera.*?version\/([\d\.]+)/,
ie: /msie\s+([\d\.]+)/
// ...
};
var ua = window.navigator.userAgent.toLowerCase(), k, re, browser = {};
for (k in re_browsers) {
if (re = re_browsers[k].exec(ua)) {
break;
}
}
browser[k] = true;
browser["version"] = parseFloat(re && re[1]);
browser["versionOrig"] = re[1];
jQuery.extend({browser: browser});
})();
可能是想知道它是什么浏览器。。。但最终要检测支持->通常建议不要试图猜测浏览器是什么,而是检查是否有可用的功能。浏览器和变体太多了…推荐的方法是使用功能检测,而不是浏览器版本检测。jQuery内部不使用它,因此它最终成为极少数人仍在使用的额外代码。将其移除比保留在那里更有意义。如果您仍然希望使用它,您将能够使用jQuery团队将在1.9和2.0版本中发布的“兼容性插件”来恢复该方法。@dystroy-“检查函数是否可用”,这是什么意思?