如何使用jQuery.support检测IE7和更低?

时间:2013-04-02 03:15:38

标签: javascript jquery jquery.support

目前我正在使用jQuery.browser来检测IE7并降低

if ($.browser.msie && parseInt($.browser.version) <= 7) {
    //codes
}

但是jQuery 1.3中的jQuery.browser已被弃用并在jQuery 1.9中被删除,我从jQuery网站上读到我们应该使用特征检测(jQuery.support)。

那么,如何使用jQuery.support检测IE7和更低版本?

7 个答案:

答案 0 :(得分:10)

最好的方法是使用条件注释并使用jQuery hasClass()进行检查。

<!--[if lt IE 7]>      <html class="ie6"> <![endif]-->
<!--[if IE 7]>         <html class="ie7"> <![endif]-->
<!--[if IE 8]>         <html class="ie8"> <![endif]-->
<!--[if gt IE 8]><!--> <html>         <!--<![endif]-->

在你的jQuery中,检查IE 7:

// Check IE 7
if ($('html').hasClass('ie7');

这种方法不能被欺骗无论如何。另请参阅Paul Irish的Conditional Stylesheets

答案 1 :(得分:2)

这个小函数会告诉你按钮代码是否坏了:

function isButtonBroken()
{
    var b = document.createElement('button');

    b.value = 1;
    b.appendChild(document.createTextNode('2'));

    return b.value === '12';
}

答案 2 :(得分:1)

jQuery.Support不会为您提供浏览器。从jQuery 1.9开始,不推荐使用$ .browser函数。如果你的快速是最简单的方法是使用浏览器本机导航器对象。

//check for IE7
if(navigator.appVersion.indexOf("MSIE 7.")!=-1)

使用Modernizr

//check for IE7 or less
if ($('html').hasClass('lt-ie7');

不推荐这样做,因为浏览器很容易“欺骗”这个对象。使用诸如Moderizer之类的库来进行特征检测是现代方法。有关详细信息,请参阅: 5+ WAYS TO CHECK IE VERSION USING JAVASCRIPT/JQUERY

答案 3 :(得分:1)

正如其他人所说,尝试检测浏览器版本是一个坏主意,你应该依赖于功能检测。

那说检测 IE浏览器渲染引擎的唯一可靠方法是使用条件注释。您可以使用这个小小的片段来获取它:

var ie = (function(){

    var undef,
        v = 3,
        div = document.createElement('div'),
        all = div.getElementsByTagName('i');

    while (
        div.innerHTML = '<!--[if gt IE ' + (++v) + ']><i></i><![endif]-->',
        all[0]
    );

    return v > 4 ? v : undef;

}());

请注意,仅适用于支持条件评论的IE版本无法在IE10或以上版本中使用

答案 4 :(得分:0)

无脚本解决方案可以基于为按钮提供一种提交类型以及一个您想要提交的值的名称。然后,在服务器上,使操作取决于name属性的值,而不是值,例如

<button type="submit" name="whatever" value="Click me 0">Click me 0</button>

现在每个浏览器都会将按钮提交为&whatever=Click+me+0。我没有使用IE 7进行测试,但是从你发布的内容来看,这应该可行。

如果表单中有多个按钮,则只有单击提交表单的按钮才会成功,因此只会提交该按钮的名称和值。

当然最简单的是使用输入类型提交,但也许你不能这样做。

答案 5 :(得分:0)

U可以使用以下条件进行检测。

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

答案 6 :(得分:-1)

您无法使用jQuery.support检测浏览器。

您应该检查要使用的浏览器功能,而不是检查浏览器。

例如,如果要使用ajax功能, 你可以通过jQuery.support.ajax

检查XMLHttpRequest对象的存在
var ajaxEnabled = $.support.ajax;
if (ajaxEnabled) {
  // do something
}

jQuery.browser document

  

jQuery.browser可能会在未来的jQuery版本中转移到插件中。

还说

  

因为$ .browser使用navigator.userAgent来确定平台,所以很容易受到用户的欺骗或浏览器本身的误传。最好尽可能完全避免特定于浏览器的代码。 $ .support属性可用于检测对特定功能的支持,而不是依赖于$ .browser。


您可以制作自己的浏览器检测代码。见下文。但请记住,正如jQuery文档所说,此代码容易受到欺骗的攻击。<​​/ p>

var ua = navigator.userAgent.toLowerCase();

var isOpera : (ua.indexOf('opera') >= 0) ? true : false;
var isFirefox : (ua.indexOf('firefox') >= 0) ? true : false;
var isMSIE : (ua.indexOf('msie') >= 0) ? true : false;
var isMSIE6 : (ua.indexOf('msie 6.0') >= 0) ? true : false;
var isMSIE7 : (ua.indexOf('msie 7.0') >= 0) ? true : false;
var isMSIE8 : (ua.indexOf('msie 8.0') >= 0) ? true : false;
var isMSIE9 : (ua.indexOf('msie 9.0') >= 0) ? true : false;
// and other browsers...