5

IE の JavaScript 条件付きコメントを調べているときに、@cc_on に出会いました。これはうまくいくようです。ただし、条件付きコメントに関するウィキペディアのエントリでは、より堅牢な IE 検出 (具体的には IE6) のために次のコードが提供されています。

/*@cc_on
    @if (@_jscript_version > 5.7)
    document.write("You are using IE8+");

    @elif (@_jscript_version == 5.7 && window.XMLHttpRequest)
    document.write("You are using IE7");

    @elif (@_jscript_version == 5.6 || (@_jscript_version == 5.7 && !window.XMLHttpRequest))
    document.write("You are using IE6");

    @elif (@_jscript_version == 5.5)
    document.write("You are using IE5.5");

    @else
    document.write("You are using IE5 or older");

@end

@*/

問題は、で「期待される定数」の JavaScript エラーが発生すること!window.XMLHttpRequestです。

明らかにウィキペディアには何らかの助けが必要であり、私はこれを機能させる必要があります。誰でも私を助けることができますか?

4

4 に答える 4

4

確かに JS の専門家ではありませんが、jscript_version == 5.7 を使用して IE7 から IE6 を分離するための検索結果が見つかりました。

/*@cc_on
if (@_jscript_version==5.6 ||
   (@_jscript_version==5.7 &&
      navigator.userAgent.toLowerCase().indexOf("msie 6.") != -1)) {
  //ie6 code
}
@*/

多分それはあなたを正しい方向に向けるでしょう。

ソース: http://sharovatov.wordpress.com/2009/06/03/effective-ie-version-targeting/

于 2009-12-04T16:25:29.417 に答える
3

解決策を見つけました。コードは次のとおりです。

<script type="text/javascript" charset="utf-8">
/*@cc_on
if (@_jscript_version > 5.7)
 document.write("You are using IE8");
else if (@_jscript_version == 5.7 && window.XMLHttpRequest)
 document.write("You are using IE7");
else if (@_jscript_version == 5.6 || (@_jscript_version == 5.7 && !window.XMLHttpRequest))
 document.write("You are using IE6");
else if (@_jscript_version == 5.5)
 document.write("You are using IE5.5");
else
 document.write("You are using IE5 or older");
@*/
</script>
于 2010-01-28T16:41:06.290 に答える
0

パーティーに少し遅れたかもしれませんが、私もこの問題に遭遇し、それを大いに楽しんで、私の解決策は次のとおりでした

var isIE = false;
/*@cc_on isIE = @_jscript_version;@*/
if (isIE !== false) {
   if (isIE == 5.8)
       isIE = 8;
   else if (isIE == 5.7 && window.XMLHttpRequest)
       isIE = 7;
   else if (isIE == 5.7 || isIE == 5.6)
       isIE = 6;
   else if (isIE <= 5.5)
       isIE = 5;
} 
于 2013-12-13T16:57:20.957 に答える