我正在尝试检查一个人是否正在使用版本低于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!”,但事实并非如此。有什么问题?
答案 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声明。