我今天开始使用IE条件评论,这是我以前从未见过的,让我摸不着头脑。 HTML就像这样开始
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<!--[if IE 7 ]> <html class="no-js ie7" lang="en"> <![endif]-->
<!--[if IE 8 ]> <html class="no-js ie8" lang="en"> <![endif]-->
...
</html>
我想知道IE7如何处理这个文件。看来文档最终会有两个html标签,第一个是未公开的。当然不会解析。但确实如此。 我决定调查。
在IE9的IE7浏览器模式中,html标记最终为
<html class="no-js ie7" lang="en" xmlns="http://www.w3.org/1999/xhtml">
包含的条件注释的html标记中的属性似乎与现有的html标记合并。进一步修改后,如果第一个html标记中尚未存在条件html标记中的属性,则它们会被添加到现有标记中。例如:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html class="not so fast" xmlns="http://www.w3.org/1999/xhtml">
<!--[if IE 7 ]> <html class="no-js ie7" lang="en"> <![endif]-->
结果:
<html class="not so fast" lang="en" xmlns="http://www.w3.org/1999/xhtml" sizcache="0" sizset="0">
这里,条件包含的html标记的class属性没有任何效果,因为无条件的html标记已经定义了一个class属性。 sizcache和sizset属性的来源是一个完全的谜。
无论如何,这种观察到的行为都不是我所期望的。关于条件评论的微软文档没有提到关于这种条件评论的使用,谷歌搜索已经枯竭。 该页面后面包含一个样式表,其中包含引用ie7和ie8类的选择器,以便在IE 7和8错误地呈现它们的情况下覆盖标准样式。
我只是好奇是否有人看过这种条件评论的使用,或者知道这种混合行为是否记录在任何地方。