Ответ 1
При использовании условных комментариев IE существуют два разных типа, о которых вам нужно знать. Во-первых, когда весь контент находится внутри комментария HTML (между <!--
и -->
), но IE будет читать его из-за условия:
<!--[if IE]>
This is inside a HTML comment, so most browsers will ignore it, but IE will
interpret it.
<![endif]-->
Другой тип - это не один комментарий, а некоторый контент, который будут видеть браузеры, окруженный двумя комментариями, которые заставят IE игнорировать его:
<!--[if !IE]> -->
This is not a HTML comment, so browsers should see it, but IE will ignore it.
<!-- <![endif]-->
(выделение кода SO показывает разницу - в верхней части все серые, как и все комментарии, но в этом текст темнее, поскольку это не комментарий).
Поддержка Haml для условных комментариев IE полезна только для создания первого рода, поскольку она является частью синтаксиса для создания комментариев блока. Если вы попробуете использовать его для второго типа (как у вас здесь), вы получите что-то вроде:
<!--[if !IE]>
This is inside a HTML comment, so other browsers will ignore it.
IE will also ignore it, as the conditional states !IE.
So everything ignores it.
<![endif]-->
который фактически является безусловным комментарием.
Чтобы использовать тип [if !IE]
в Haml, вам, вероятно, придется сделать это вручную:
%p Some other content
<!--[if !IE]> -->
%p
Here some content that shouldn't appear in IE.
<!-- <![endif]-->
Вы также можете использовать помощник Haml surround
, например:
%p Some other content
=surround '<!--[if !IE]> -->', '<!-- <![endif]-->' do
%p
Here some content that shouldn't appear in IE.
(Если вы используете Rails, вам нужно использовать html_safe
для строк, т.е. surround '<!--[if !IE]> -->'.html_safe, '<!-- <![endif]-->'.html_safe do
).
Если вы используете это много, возможно, стоит создать вспомогательный метод, который переносит этот вызов на surround
.