为什么$ .browser被弃用 - 什么是更好的选择?

时间:2012-09-11 15:09:58

标签: javascript jquery browser

所以我知道{j} 1.3已经弃用了$.browser并且“不赞成”,但它仍然存在&在代码中工作。

它仍然使用普通的javascript:navigator.userAgent来确定正在使用的浏览器以及版本。


现在有一些关于这些我不了解导航器本身的东西,我不应该使用$.browser或简单的vanilla JS来获取浏览器/版本?我只是想确保他们有IE8(例如),他们确实拥有它,而且我没有处理错误的代码。


我们对浏览器嗅探有什么其他选择?我知道$.support,我使用modernizr,但有时我只需要简单的浏览器版本,而不是看到浏览器能够处理什么(我认为这是一个完全不同的问题解决者)。

3 个答案:

答案 0 :(得分:1)

你自己回答这个问题。理想的是检查功能支持。随着越来越多的浏览器和设备进入市场,这种方法应该扩展。

但是,如果你想做一些“沮丧和肮脏”的事情,那么浏览器检测当然有效,但只有你知道你的代码在现有的一组浏览器中工作(或者甚至只是那些你已经测试过的代码)用)。

答案 1 :(得分:1)

一般情况下,建议不要试图猜测浏览器是什么,而是检查功能是否可用。浏览器和变体太多了。

要检查某项功能是否可用,您只需执行以下操作:

if (!Array.prototype.map) {
    // not available, shut down computer !

答案 2 :(得分:0)

如果“必须”知道我在页面上的哪个浏览器,我个人使用它;

(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});
})();