Javascript 如何测试internet explorer版本是版本7还是版本8?

Javascript 如何测试internet explorer版本是版本7还是版本8?,javascript,jquery,Javascript,Jquery,我想测试IE是版本7还是版本8,以及它是否阻止特定代码运行 我尝试了以下代码,但似乎不起作用: if($.browser.msie && parseInt($.browser.version, 10) <= 8) { $(document).on('mouseenter', '.thumb', function () { $(this).find('.bgg').stop().animate({ opacity : 1 });

我想测试IE是版本7还是版本8,以及它是否阻止特定代码运行

我尝试了以下代码,但似乎不起作用:

if($.browser.msie && parseInt($.browser.version, 10) <= 8) {
        $(document).on('mouseenter', '.thumb', function () {
          $(this).find('.bgg').stop().animate({ opacity : 1 });
        });

        $(document).on('mouseleave', '.thumb', function () {
          $(this).find('.bg').stop().animate({ opacity : .5 });
        });
      }

if($.browser.msie&&parseInt($.browser.version,10)由于只需要一个脚本文件,我不得不在我的项目中对IE进行UA嗅探。我们不需要@Kolink方法所需的额外http请求,也不希望分割功能。为此,我只需使用:

var ltie9 = $.browser.msie && parseInt($.browser.version, 10) < 9;
我有一个显示了IE10之前的几种不同IE检测的示例。

万无一失的方法:

<!--[if lte IE 8]><script type="text/javascript">
    // specific code for IE8 and below goes here.
</script><![endif]-->

使用。IE7不提供
查询选择器
方法,例如replace

if ($.browser.msie && parseInt($.browser.version, 10) <= 8)

还有一些想法

IE8可以用作IE7,并且可以像IE7那样工作吗-

要区分,可以测试document.documentMode

向navigator对象添加属性可以避免再次测试

//(Run= {};

if(window.addEventListener){
    Run.handler= function(who, typ, fun){
        if(who && who.addEventListener) who.addEventListener(typ, fun, false);
    }// all browsers except IE8 and below
}
else if(window.attachEvent){
    /*@cc_on
    @if(@_jscript_version>5.5){
        navigator.IEmod= document.documentMode?
        document.documentMode:window.XMLHttpRequest? 7:6;
    }
    @end
    @*/
    Run.handler= function(who, typ, fun){
        if(who && who.attachEvent){
            who.detachEvent('on'+typ, fun);
            who.attachEvent('on'+typ, fun);
        }
    }
}

+1介绍功能检测而非doctype嗅探的一般概念。然而,这只在尝试检测功能时有效,您需要。使用不相关的功能可能容易出错。任天堂DSi基于Opera的浏览器也不支持
querySelector
。这是否意味着它是IE7?@Kolink:我没有注意到错误使用
任天堂DS
标签回答问题。没有,但是他们没有任何特定的浏览器标签,这表明解决方案应该适用于所有浏览器。好吧,这是一个合理的反对意见。如果你使用与你的问题无关的检测功能,那么你可能会遇到一些严重的问题。FF3和O9.6也不支持t querySelector.+1,用于向其他浏览器隐藏不必要的内容。(但以http请求为代价)作为全局,我唯一拥有的另一个东西是运行整个脚本的对象文字名称空间。我不会滥用它,因此会保持它的干净。那么为什么不将它包括在您的名称空间中呢?全局对象很容易进行不必要的修改。UA嗅探非常容易出错。它适用于我在相当大的环境中工作,我从来没有遇到过问题orted提出了相反的建议。我只嗅探IE6和IE7。其他所有东西都使用的是用户的特征检测。
 if (document.all && !document.querySelector)
//(Run= {};

if(window.addEventListener){
    Run.handler= function(who, typ, fun){
        if(who && who.addEventListener) who.addEventListener(typ, fun, false);
    }// all browsers except IE8 and below
}
else if(window.attachEvent){
    /*@cc_on
    @if(@_jscript_version>5.5){
        navigator.IEmod= document.documentMode?
        document.documentMode:window.XMLHttpRequest? 7:6;
    }
    @end
    @*/
    Run.handler= function(who, typ, fun){
        if(who && who.attachEvent){
            who.detachEvent('on'+typ, fun);
            who.attachEvent('on'+typ, fun);
        }
    }
}