检测IE7或更低的条件评论和javascript无法正常工作

时间:2011-04-11 22:10:33

标签: javascript internet-explorer

我正在尝试检查一个人是否正在使用版本低于8或其他任何内容的IE。

我使用条件注释声明boolean ..

<!--[if lt IE 8]>
<script type="text/javascript">var badIE = true;</script>
<![endif]-->

现在我在我的js文件中检查这样的布尔值:

if (badIE == true){
    alert('You have bad IE!');
} else {
    alert('Bueno!');
}

如果我使用的是IE7或IE6,它会警告“你的IE浏览器坏了!”。如果我使用其他任何东西,它应该警告“Bueno!”,但事实并非如此。有什么问题?

3 个答案:

答案 0 :(得分:20)

您需要先将badIE变量声明为false才能使其正常工作,否则条件之外的代码会知道关于badIE

试试这个:

<script>
    var badIE = false;
</script>

<!--[if lt IE 8]>
<script type="text/javascript">badIE = true;</script>
<![endif]-->

<script>
if (badIE == true){
    alert('You have bad IE!');
} else {
    alert('Bueno!');
}
</script>

答案 1 :(得分:5)

不是直接的答案(Neal已经涵盖了您),但您可能也有兴趣:http://code.google.com/p/ie7-js/

从页面:

IE7.js是一个JavaScript库,使Microsoft Internet Explorer的行为类似于符合标准的浏览器。它解决了许多HTML和CSS问题,并使透明PNG在IE5和IE6下正常工作。

虽然如果您使用的是jQuery,请记住它与此库一样many of the same things

答案 2 :(得分:2)

您的条件语句<!--[if lt IE 8]> ... <![endif]-->表示如果Web浏览器不是小于8的IE版本,则不会执行这些代码之间的代码,这意味着永远不会为所有其他浏览器声明var badIE(即FireFox,IE8,IE9,Safari等。)

因为它从未声明,所以当浏览器尝试执行if (badIE == true){时,您在后台收到静默脚本错误,这意味着浏览器会立即停止读取脚本并且不会尝试执行{{1声明。