/ * @ cc_on和IE6检测

时间:2009-12-03 22:00:39

标签: javascript internet-explorer internet-explorer-6 conditional-comments browser-feature-detection

在研究IE的JavaScript条件评论时,我偶然发现了@cc_on。这似乎有效。但是,条件注释上的wikipedia entry为更强大的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

@*/

问题是,我在!window.XMLHttpRequest上收到“预期不变”的javascript错误。

很明显,维基百科需要一些帮助,我需要让它发挥作用。任何人都可以帮助我吗?

4 个答案:

答案 0 :(得分:4)

肯定没有JS专家,但有些搜索发现这是用IE7从IE7中隔离IE6使用jscript_version == 5.7:

/*@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/efficient-ie-version-targeting/

答案 1 :(得分: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>

答案 2 :(得分:2)

我多年来一直在使用这种漂亮的单线:

var IE; //@cc_on IE = parseFloat((/MSIE[\s]*([\d\.]+)/).exec(navigator.appVersion)[1]);

小而准确(在IE 6-10中测试)。

注意那些使用grunt的人。一定要设置preserveComments:'some',如果你使用uglify插件来确保不删除条件注释。

答案 3 :(得分:0)

也许有点晚了,但是我也遇到了这个问题,对它有一个爆炸,我的解决方案如下,希望它有所帮助https://github.com/davesmiths/isIE

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;
}