web-dev-qa-db-ja.com

if条件:ブラウザがIEおよびIEブラウザのバージョンが9より古い場合

以下のif条件は、ブラウザがIEでIEブラウザのバージョンが9より新しい場合、テストするIE 9がないため、難しいと思います。正しい出力を知るために、これは私が望むものの100%ではありませんbcosこのスクリプトはChrome、Firefoxなどの他のブラウザでもデフォルトで実行する必要があります-if条件で設定することは可能ですか?

if ($.browser.msie && parseInt($.browser.version) > 9) 
{
  // run this code
}

If条件を使用したい理由は、スクリプトにIE 7のエラーがあるように見えるためです。もちろん、スクリプトを修正するのが最善ですが、スクリプトのどの部分がIEであるかわかりません。それを受け入れません(他のすべてのブラウザは完全に正常に動作します!)。 IE 6、7、8などのスクリプトをデバッグするために使用できるツールを知っていますか?私はメモ帳++を使用してjqueryなどを記述しているので、デバッグ機能は提供されません...

したがって、次善の解決策は、9より古いIEブラウザーの場合、このスクリプトを実行しないことです。

ちなみに、これはIE7ブラウザのエラーメッセージ表示ですが、理解できません!

Line:910  //which line?
Char:4   // what the hell is this?
Error: Object doesn't support this property or method //what?
Code: 0    // 0 of what?
URL: http://localhost/mysite/page-1 // so which file is causing the error then? the .js or .html or something else??

血まみれのIE!

ありがとう。

11
laukok

まず、MicrosoftのサイトからダウンロードしてIE9プレビューを入手できます: http://ie.Microsoft.com/testdrive/

次に、parseInt($.browser.version) > 9はおそらくバージョンがより大きい9であることを確認します。もちろん、v10がリリースされるまではチェックされません。 。 (おそらく_>=_( '以上')を意図していましたか?

私は通常、ブラウザの検出やブラウザ固有のコードを避けるように人々に言います。必要な場合もありますが、ごくまれです。ほとんどの場合、開発者は何が失敗しているかを知り、それを回避することでより良いサービスを受けることができます( Modernizr のようなツールはこの種のことを本当に助けます)。

ただし、単にブラウザの検出を行う必要がある場合もあります。

あなたの場合、本当にIEを検出する必要がある場合は、実行している方法で検出しないでください(つまり、バージョン9をチェックします)。古いバージョンをチェックする方が良いでしょう、そして私は条件付きコメントがそれをするための最良の方法であることを提案します。

_<script>
var i_am_old_ie = false;
<!--[if LT IE  9]>
i_am_old_ie = true;
<![endif]-->
</script>
_

後でif()ステートメントは次のようになります。

_if(i_am_old_ie) {
   //do stuff for IE6/7/8
} else {
   //do stuff for all other browsers (including IE9)
}
_
10
Spudley

コードは問題ないように見えますが、parseIntで基数パラメーターを設定するのを忘れました。

if ($.browser.msie && parseInt($.browser.version, 10) > 9){

  // you need to wait a couple years to test if it works...
  alert("I'm IE10 or 11...");

}

これはエラーを引き起こすことはありません

12
Harmen

ブラウザがIEかどうかをテストするJavascriptのバージョンは次のとおりです。

<script>

    function getIEVersion() {
        var rv = -1; // Return value assumes failure.
        if (navigator.appName == 'Microsoft Internet Explorer') {
            var ua = navigator.userAgent;
            var re  = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");
            if (re.test(ua) != null)
                rv = parseFloat( RegExp.$1 );
        }
        return rv;
    }


    function checkVersion() {
        var ver = getIEVersion();

        if ( ver != -1 ) {
            if (ver <= 9.0) {
                // do something
            }
        }
    }

    checkVersion();

</script>

このメソッドは、HTML5固有のモジュールを使用していて、ブラウザーがそれらの機能をサポートしていない場合に備えて、いくつかのフォールバック関数を実装する場合に役立ちます。 <canvas>

8
Endre Simo

さらに簡単な方法があります。

これはコメントであるため、IEを除く他のすべてのブラウザでは無視されます。

var IE;
//@cc_on IE = navigator.appVersion;

次に、これをスクリプトで使用して、すべてのIEバージョンを検出します。

if (IE) {
//This is IE.
}
else {
//This is NOT IE.
}

または、次のようなバージョンと照合します。

if (IE <= 6) {}, if (IE < 9) }, if (IE == 7) {} etc etc...

これらのタイプの条件文を見つけたソースは次のとおりです。 http://www.javascriptkit.com/javatutors/conditionalcompile.shtml

7
t.mikael.d

インラインJavaScriptをたくさん入れる代わりに、ターゲットにしているバージョンの空のdivを追加するだけでよいので、HTMLの上部のbodyタグのすぐ内側に次のように配置します。

<!--[if LT IE  9]>
    <div id="iedetect" class="oldie"></div>
<![endif]-->

次に、jqueryにifステートメントを配置して、そのブロックをチェックできます。

if ($("#iedetect").is(".oldie")) {
    //Do something
} else {
   //Do Something else in all other browsers
}
2
user3101105
<!--[if IE 8]>
  <script type="text/javascript">
    // this is only executed for IE 8
  </script>
<![endif]-->
1
user3931495

カスケードは、マルチブラウザの検出に最適であることがわかりました。このコードは、IE 8 76で表示/非表示にフェードを変更するために使用されました。

$(document).ready(function(){
    if(jQuery.browser.msie && jQuery.browser.version.substring(0, 1) == 8.0)
         { 
             $(".glow").hide();
            $('#shop').hover(function() {
        $(".glow").show();
    }, function() {
        $(".glow").hide();
    });
         }
         else
         { if(jQuery.browser.msie && jQuery.browser.version.substring(0, 1) == 7.0)
         { 
             $(".glow").hide();
            $('#shop').hover(function() {
        $(".glow").show();
    }, function() {
        $(".glow").hide();
    });
         }
         else
         {if(jQuery.browser.msie && jQuery.browser.version.substring(0, 1) == 6.0)
         { 
             $(".glow").hide();
            $('#shop').hover(function() {
        $(".glow").show();
    }, function() {
        $(".glow").hide();
    });
         }
         else
         { $('#shop').hover(function() {
        $(".glow").stop(true).fadeTo("400ms", 1);
    }, function() {
        $(".glow").stop(true).fadeTo("400ms", 0.2);});
         }
         }
         }
       });
1
Timothy
<!--[if (IE 9)|!(IE)]><!--> Script here <!--<![endif]-->
1
Gregg B

またはあなたはこれを行うことができます

<!--[if IE 9]>
  <script type="text/javascript">
    // this is only executed for IE 9
  </script>
<![endif]-->
1
user3931495