为什么只有IE有条件注释?


<!--[if IE 6]>
Special instructions for IE 6 here
<![endif]-->

是否有任何其他用途的条件评论,我错过了,还是只有IE得到这些?

另外,为什么只有IE得到这些?

你说得对;只有IE有这个功能。

这是微软在浏览器大战时期为IE发明的一个功能。它从未被批准为标准,也没有其他浏览器制造商实现过它。

他们将其作为一套功能的一部分来实现,目的是使只使用IE的开发人员的生活更轻松,这样他们就可以确定他们使用的是哪个IE版本。这是必要的,因为IE(与当时的其他浏览器一样)正在开发非标准功能,并且从一个版本到下一个版本通常会有非常重大的变化。

所以它是为IE开发人员准备的,但实际上它最终起到了相反的效果,因为它现在通常被跨浏览器开发人员用来攻击他们的网站,使其与旧版本的IE一起工作。

事实上,这可能是一件好事,没有其他浏览器制造商实现它,因为尽管它确实使它非常容易知道你使用的浏览器的版本,浏览器/版本检测通常被认为是一个糟糕的做法。

目前的想法倾向于特征检测而不是浏览器/版本检测。为此,您可以使用Modernizr之类的工具来确定用户浏览器支持的特性,这可以为如何处理旧浏览器提供更细粒度的控制。

然而,在旧版本IE的情况下,浏览器与某些标准严重不兼容,有时这是不够的,在这种特殊情况下,确实需要检查浏览器和版本。考虑到这一点,有条件注释特性是件好事。考虑到没有其他浏览器有这样的问题,这可能只是一个祝福,他们不支持条件注释。

在一个理想的世界里,没有人还在使用需要这种破解的旧版本的IE。但是它们是,我们需要支持它们,所以对于那些你不能用特征检测做到的少数情况,条件注释是一种选择。

[编辑]
这是一个古老的答案,但值得重新使用,因为从IE10开始,条件评论不再受支持。IE10是一个比它的前辈好得多的浏览器,微软一直在积极推动使它尽可能地现代化和符合标准。移除条件评论功能是这一举措的一部分。当然,条件注释在旧版本中仍然存在,上面支持和反对使用条件注释的争论仍然存在,但对于IE10和未来的版本,处理浏览器问题的条件注释选项将不再可用。

微软实现了这些功能,以便开发人员可以利用新浏览器的增强功能。但事实上,就像上面回答的那样,它们现在更多地用于确保在不同浏览器中工作的代码也可以在IE中工作。

完整的故事:http://msdn.microsoft.com/en-us/library/ms537512%28v=vs.85%29.aspx

这是因为你需要条件注释来帮助IE渲染你的页面。否则大多数页面将无法在IE中正确显示(因为没有正确处理默认值)。

最新更新