在研究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错误。
很明显,维基百科需要一些帮助,我需要让它发挥作用。任何人都可以帮助我吗?
答案 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;
}