为什么$.brower被弃用?还有什么更好的替代方案

Why is $.browser deprecated - and what is a better alternative?

本文关键字:更好 什么 方案 brower 为什么      更新时间:2023-09-26

所以我知道$.browser自jQuery 1.3以来一直被弃用,"不受欢迎",但它仍然存在&在代码中工作。

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


现在是不是有一些我对导航器本身不了解的东西,我不应该使用$.browser或普通JS来获得浏览器/版本?我只想确保当他们有IE8(例如)时,他们真的有,而且我没有处理错误的代码。


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

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

然而,如果你想做一些"肮脏"的事情,那么浏览器检测当然有效,但前提是你知道你的代码在现有的浏览器中有效(甚至只是你测试过代码的浏览器)。

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

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

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