当使用IE条件注释时,您需要了解两种不同的类型。首先,当整个内容位于HTML注释(在
<!--
和
-->
之间)中,但是由于条件,IE将读取它:
另一种类型不是单个注释,而是被两个注释包围的浏览器会忽略的内容。
This is not a HTML comment, so browsers should see it, but IE will ignore it.
(SO的代码高亮显示了区别-在顶部,所有内容都是注释,因此一切都是灰色的,但在这个示例中,文本颜色更深,因为它不是注释)。
Haml对IE条件注释的支持仅适用于创建第一种类型,因为它是创建块注释的语法的一部分。如果你尝试将其用于第二种类型(就像你在这里所做的那样),你会得到类似于:
这实际上是一个无条件注释。
为了在 Haml 中使用 [if !IE]
类型,您可能需要手动完成:
%p Some other content
<!--[if !IE]> -->
%p
Here's some content that shouldn't appear in IE.
<!-- <![endif]-->
您还可以使用 Haml 的
surround
助手,例如:
%p Some other content
=surround '<!--[if !IE]> -->', '<!-- <![endif]-->' do
%p
Here's some content that shouldn't appear in IE.
如果您使用的是Rails,则需要在字符串上使用html_safe
,即:surround '<!--[if !IE]> -->'.html_safe, '<!-- <![endif]-->'.html_safe do
。
如果您经常使用这个方法,可能值得创建一个帮助程序方法来包装对surround
的调用。