如何使用jQuery.support检测IE7和IE8

时间:2012-01-17 06:15:09

标签: jquery internet-explorer cross-browser

如何使用jQuery.support属性检测IE 7和IE 8?

是否可以使用jQuery.support检测浏览器版本,或者只是那些等等等等?浏览器功能?

12 个答案:

答案 0 :(得分:41)

这完全有可能得到支持:

if (!$.support.leadingWhitespace) {
    //IE7 and 8 stuff
}

这也检测IE 6但是,如果你不想让IE 6运行这个代码块,你需要另一个标志来排除它

不使用浏览器的一个很好的理由是它是一个不推荐使用的功能,它可能会被删除到版本1.9的插件。 (参见对How to detect IE7 with jQuery?的答案的评论)

“我们建议不要使用此属性;请尝试使用功能检测(请参阅jQuery.support).jQuery.browser可能会在未来的jQuery版本中移动到插件” http://api.jquery.com/jQuery.browser/

这是一个工作示例:http://jsfiddle.net/AGtG8/16/

答案 1 :(得分:8)

if (jQuery.support.leadingWhitespace == false){

... code for IE7-IE8 ...

}
else {
... 
}

答案 2 :(得分:5)

请注意以下事项,因为它还包括IE10:

if ($.browser.msie && $.browser.version.substr(0,1)<7) {
//<IE7
}

更好地使用:

if ($.browser.msie && parseInt($.browser.version,10)<7) {
//<IE7
}

答案 3 :(得分:3)

我发现的一个技巧是在HTML中添加条件标签

<!--[if lt IE 7]><body class="ie ie6 lte9 lte8 lte7"><![endif]-->
<!--[if IE 7]><body class="ie ie7 lte9 lte8 lte7"><![endif]-->
<!--[if IE 8]><body class="ie ie8 lte9 lte8"><![endif]-->
<!--[if IE 9]><body class="ie ie9 lte9"><![endif]-->
<!--[if !IE]><!--><body class="not-ie"><!--<![endif]-->

然后像这样使用JQuery:

$('body.ie7')

它还有助于IE特定的IE

body.ie6{ margin: 0; }

我不知道这对你有好处,但无论如何,这仍然是一个选择。

答案 4 :(得分:2)

jQuery.support用于检测浏览器功能。要检测浏览器版本,请使用jQuery.browser:

if ($.browser.msie && $.browser.version.substr(0,1)<7) {
//IE7

}

更新:$。浏览器现已弃用,请勿使用。

答案 5 :(得分:2)

如上所述,.support用于特征检测。如果您想检测浏览器,只需使用.browser

 var ua = $.browser;
 if ( ua.msie && ua.version.slice(0,1) == "8" ) {
   alert('IE 8');
 } else if ( ua.msie && ua.version.slice(0,1) == "7" ) {
   alert('IE 7');
 } else {
   alert('something else');
 }

答案 6 :(得分:1)

我注意到有很多不同的方法,虽然我发现这种方法效果很好,但我们不会使用$.support。另外,jquery刚刚宣布他们将在jquery 2.0(http://blog.jquery.com/2012/06/28/jquery-core-version-1-9-and-beyond/)中删除对IE 6,7,8的任何支持。

var msVersion = navigator.userAgent.match(/MSIE ([0-9]{1,}[\.0-9]{0,})/),
      msie = !!msVersion,
      ie6 = msie && parseFloat(msVersion[1]) < 7;

  // Help prevent flashes of unstyled content
  if (!ie6) {
    //Do Something here.
  }

快乐的编码!

答案 7 :(得分:0)

我用它来检查浏览器是否为8或更少

更改ie版本只需将8更新为另一个即verion

if (jQuery.browser.msie && jQuery.browser.version.substr(0,1) <= 8 ) {   
    runIECode();
} else {
    runOther();
}

答案 8 :(得分:0)

我添加了几行Javascript以使其再次运行:

jQuery.uaMatch = function (ua) {
    ua = ua.toLowerCase();

    var match = /(chrome)[ \/]([\w.]+)/.exec(ua) ||
            /(webkit)[ \/]([\w.]+)/.exec(ua) ||
            /(opera)(?:.*version|)[ \/]([\w.]+)/.exec(ua) ||
            /(msie) ([\w.]+)/.exec(ua) ||
            ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua) ||
            [];

    return {
        browser: match[ 1 ] || "",
        version: match[ 2 ] || "0"
    };
};

if (!jQuery.browser) {
    matched = jQuery.uaMatch(navigator.userAgent);
    browser = {};

    if (matched.browser) {
        browser[ matched.browser ] = true;
        browser.version = matched.version;
    }

    // Chrome is Webkit, but Webkit is also Safari.
    if (browser.chrome) {
        browser.webkit = true;
    } else if (browser.webkit) {
        browser.safari = true;
    }

    jQuery.browser = browser;
}

答案 9 :(得分:0)

if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)) { 
    var ieversion = new Number(RegExp.$1);
    alert(ieversion < 9);
}

答案 10 :(得分:-1)

使用jQuery.browser.version代替支持

答案 11 :(得分:-1)

试试$.browser,它会告诉您浏览器版本是否低于IE9

 var isM = false;
 $.each($.browser, function (i, val) {
    if ($.browser.msie && parseInt(val) < 9) isM = true;
});