在Jade模板引擎中的IE条件语句

时间:2013-12-31 07:49:27

标签: node.js express pug

如何在JADE语言中转换以下IE条件语句:

<!--[if IE 8]> <html lang="en" class="ie8"> <![endif]-->
<!--[if IE 9]> <html lang="en" class="ie9"> <![endif]-->
<!--[if !IE]><!--> <html lang="en"> <!--<![endif]-->

我试过以下但是没有用:

//if IE 8
    html lang="en"  class="ie8"
//if IE 9
    html lang="en" class="ie9"
//if !IE
    html lang="en"
// <![endif]

显示以下输出:

<!--if IE 8html lang="en"  class="ie8"
-->
<!--if IE 9html lang="en" class="ie9"
-->
<!--if !IEhtml lang="en"
-->
<!-- <![endif]-->

有人可以指导我如何纠正。

3 个答案:

答案 0 :(得分:9)

几个月前删除了对//if IE 8条件评论语法的支持:Git Commit
版本0.35是支持它们的最后一个版本; v1.0是删除后的第一个版本。


我一直在使用@Jayram使用的文字样式;唯一的区别是条件逻辑àlah5bp和结束html标记:

| <!--[if IE 8]>         <html lang="en" class="lt-ie9"> <![endif]-->
| <!--[if gt IE 8]><!--> <html lang="en"> <!--<![endif]-->

注意:请记住使用| </html>关闭文档,因为最初的html标记不是Jade的自动关闭语法。

答案 1 :(得分:6)

此代码应按预期工作。它适用于Jade版本,最高可达0.35.0

请注意,最后一个html元素需要正确 Jade元素(这就是为什么属性在括号(...)内)的原因。前两个元素是注释的一部分,因此应该格式化为格式化的 HTML元素。

//if IE 8
    <html lang="en" class="ie8">
//if IE 9
    <html lang="en" class="ie9">
//[if !IE]><!
html(lang="en")
    //<![endif]

页面输出如下:

<!--[if IE 8]><html lang="en" class="ie8"><![endif]-->
<!--[if IE 9]><html lang="en" class="ie9"><![endif]-->
<!--[if !IE]><!--><html lang="en"><!--<![endif]-->

修改

从版本1.0.0开始(在 2013年12月22日发布),Jade不再解析评论内容,并放弃了对IE条件评论的支持。

新方法是使用格式良好的IE条件注释。这样做是安全的,因为现在Jade忽略以<开头的任何行。

您的代码如下:

<!--[if IE 8]><html class="ie8" lang="en"><![endif]-->
<!--[if IE 9]><html lang="en" class="ie9"><![endif]-->
<!--[if !IE]><!-->
html(lang="en")
  <!--<![endif]-->

请注意,html元素将由Jade处理(具有其所有功能,例如从请求处理方法设置类名),因此您应| </html>附加到你的Jade文件的结尾。

您也可以参考IE Conditional Comments in Jade Template Engine帖子,了解使用Jade混合IE条件评论的替代方法。

我希望这会有所帮助。

答案 2 :(得分:3)

像这样使用它。这对我有用。

   | <!--[if IE 8]> <html lang="en" class="ie8"> <![endif]-->
   | <!--[if IE 9]> <html lang="en" class="ie9"> <![endif]-->
   | <!--[if !IE]><!--> <html lang="en"> <!--<![endif]-->