2

我想测试 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 });
        });
      }

理想情况下,我真的不想使用这种检测,但在这种情况下必须使用它。

4

4 回答 4

4

万无一失的方法:

<!--[if lte IE 8]><script type="text/javascript">
    // specific code for IE8 and below goes here.
</script><![endif]-->
于 2012-04-05T12:18:12.580 回答
2

由于只需要一个脚本文件,我不得不在我的项目中对 IE 进行 UA 嗅探。我们不希望@Kolink 的方法需要额外的 http 请求,也不希望拆分功能。为此,我将简单地使用:

var ltie9 = $.browser.msie && parseInt($.browser.version, 10) < 9;

然后使用以下方法做任何你想做的事情:

if (ltie9) { ... }

我有一个jsFiddle显示几个不同的 IE 检测到 IE10 只是为了演示。

于 2012-04-05T12:15:42.950 回答
0

使用对象检测。IE7 没有提供querySelector方法,例如替换

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

 if (document.all && !document.querySelector)

这里还有一些想法

于 2012-04-05T12:18:54.243 回答
0

IE8可以用作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);
        }
    }
}
于 2012-04-05T14:43:58.950 回答