2011-04-11 35 views
6

我试图检查一个人是否使用IE版本低于8或其他任何东西。检测IE7或更低的条件注释和JavaScript不工作

我使用条件注释来声明布尔..

<!--[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!”,但它不会。问题是什么?

回答

20

您需要声明badIE变量为假第一顺序为它工作,否则条件外的代码知道什么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> 
+0

谢谢先生! – 2011-04-11 23:10:29

+0

没问题^ _ ^。 – Neal 2011-04-11 23:13:59

2

你的条件语句<!--[if lt IE 8]> ... <![endif]-->意味着,如果Web浏览器不是IE版本低于8,这意味着var badIE将永远不会对所有其他浏览器中声明(IE,火狐,IE8,IE9那些之间的代码不会被执行,Safari等)

因为它从来没有被声明过,所以当浏览器试图执行if (badIE == true){时,你会在后台收到沉默的脚本错误,这意味着浏览器立即停止阅读脚本并且不会尝试执行alert('Bueno!');声明。

5

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

来自页面:

IE7.js是一个JavaScrip t库,使Microsoft Internet Explorer的行为像一个符合标准的浏览器。它修复了许多HTML和CSS问题,并使IE6和IE6下的透明PNG工作正常。

虽然如果您使用的是jQuery,请记住它的确是many of the same things这个库。

+0

当淡入或淡出透明图像时是否还包含png修复?这就是我搞乱它的全部原因...... – 2011-04-12 20:42:17

+0

如果你点击链接,它确实覆盖.png!很酷的东西。 – 2013-12-12 15:54:02