0

所以我知道自 jQuery 1.3 以来$.browser已被弃用和“皱眉”,但它继续存在并在代码中工作。

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


现在是否有一些关于导航器本身我不知道的东西,我不应该使用任何一个$.browser或普通的香草 JS 来获取浏览器/版本?我只是想确保他们何时拥有 IE8(例如),他们确实拥有它,而且我没有处理错误的代码。


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

4

3 回答 3

1

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

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

于 2012-09-11T15:13:29.587 回答
1

通常建议不要尝试猜测浏览器是什么,而是检查功能是否可用。浏览器和变体太多。

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

if (!Array.prototype.map) {
    // not available, shut down computer !
于 2012-09-11T15:22:33.233 回答
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});
})();
于 2013-01-16T22:27:54.380 回答