2

ユーザーが Internet Explorer を使用している場合、スクリプトを動的に追加しようとしています。私は IE Con​​ditionals を試しましたが、chrome はタグが気に入らなかった!IEので、jquery の方法で試しています:

<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js" ></script>
<script type="text/javascript">
    if($.browser.msie){
        document.write('<script type="text/javascript" src="ie/ieFix.js" ></script>');
    }
    else{
        document.write('<script type="text/javascript" src="dynamic.js" ></script>');
    }
</script>

これを追加できない理由がわかりませんが、代わりに返されます'); } else{ document.write(''); }

それらを変数に投げても同じ効果があります:/

IE コンディショナル

<!--[if !ie]>-->
    <script type="text/javascript" src="dynamic.js" ></script>
<!--<![endif]-->
<!--[if ie]>-->
    <script type="text/javascript" src="ie/ieFix.js" ></script>
<!--<![endif]-->
4

3 に答える 3

4

</script>ラインで

document.write('<script type="text/javascript" src="ie/ieFix.js" ></script>');

の終了タグとして実際に一致します

<script type="text/javascript">

その上の行に。のように書き換える必要があります。

document.write('<script type="text/javascript" src="ie/ieFix.js" ></scr' + 'ipt>');

</script>ブラウザーを終了タグと混同しないようにします。

于 2012-05-02T23:02:44.393 に答える
1

任意の IE チェック

function detectIEEdge() {
    var ua = window.navigator.userAgent;

    var msie = ua.indexOf('MSIE ');
    if (msie > 0) {
        // IE 10 or older => return version number
        return parseInt(ua.substring(msie + 5, ua.indexOf('.', msie)), 10);
    }

    var trident = ua.indexOf('Trident/');
    if (trident > 0) {
        // IE 11 => return version number
        var rv = ua.indexOf('rv:');
        return parseInt(ua.substring(rv + 3, ua.indexOf('.', rv)), 10);
    }

    var edge = ua.indexOf('Edge/');
    if (edge > 0) {
       // Edge => return version number
       return parseInt(ua.substring(edge + 5, ua.indexOf('.', edge)), 10);
    }

    // other browser
    return false;
}
于 2013-05-08T13:58:42.433 に答える
0

正しく行うと、 Chrome は正常に動作し!IEます。

<!--[if !ie]>-->
    Put stuff for non-IE browsers here
<!--<![endif]-->

上記のコードで問題が発生する理由は、HTML パーサーが</script>を文字列の一部ではなく、スクリプトの末尾と見なすためです。人々は通常、 を使用してこれを修正し<\/script>ます。


更新:「if IE」が間違っています。

<!--[if ie]>
    IE stuff - this is a "conditional reveal"
<![endif]-->
<!--[if !ie]>-->
    Non-IE stuff - this is a "conditional hide"
<!--<![endif]-->
于 2012-05-02T23:02:37.807 に答える