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

スクリプトファイルが1つしかないため、プロジェクトでIEをUAスニッフィングする必要がありました。@Kolinkのメソッドが必要とする余分なhttpリクエストは必要ありません。また、機能を分割する必要もありません。そのために私は単に使用します:

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

次に、以下を使用して、好きなことを行います。

if (ltie9) { ... }

実例として、IE10までのいくつかの異なるIE検出を表示するjsFiddleがあります。

于 2012-04-05T12:15:42.950 に答える
0

IE8は、IE7として使用でき、IE7のように機能します-

区別するために、document.documentModeをテストできます

ナビゲーターオブジェクトにプロパティを追加すると、再度テストする必要がなくなります。

//(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 に答える
0

オブジェクト検出を使用します。IE7はメソッドを提供しないためquerySelector、たとえば、

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

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

ここにいくつかのアイデアがあります

于 2012-04-05T12:18:54.243 に答える