Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/403.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么不推荐使用$.browser?还有什么更好的选择?_Javascript_Jquery_Browser - Fatal编程技术网

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-“检查函数是否可用”,这是什么意思?