替换IE 10+的IE条件语句

时间:2014-06-10 12:51:59

标签: html internet-explorer firefox cross-browser conditional-comments

IE 10+不支持条件语句。这使得IE 7-11的开发变得棘手,因为IE10-11在条件语句中解析内容而不是忽略它。例如:

<!--[if (IE 9) | (IE 8)]><!-->
   // Code here will get rendered by IE10 & IE11
<!--<![endif]-->

所以,如果我想要一些代码将在IE 8&amp;只有9,然后一些代码将在IE10,IE11&amp;仅限Firefox,我该怎么做?

编辑:请注意,我不是在谈论风格;我想支持我的网页中的重大结构更改。 E.g:

<!--[if (IE 9) | (IE 8)]><!-->
   <div>
      <div>
         Test
      </div>
   </div>
<!--<![endif]-->

<!--[if (IE 10]><!-->
   <div>
      <h3>Test</h3>
   </div>
<!--<![endif]-->

2 个答案:

答案 0 :(得分:3)

我让这个工作在我的最后。看起来条件语句的格式是关闭的。

<!--[if (IE 9) | (IE 8)]>
  Code here will not get rendered by IE10 & IE11
<![endif]-->

另外,你渲染的是什么类型的代码,js,css?

答案 1 :(得分:2)

如果您只想让IE8 / 9从其他所有内容中呈现不同的标记(意味着IE10 +接收与所有其他浏览器相同的代码),那完全可行:

  • 您需要隐藏所有其他浏览器的(IE 9) | (IE 8)条件。这意味着让注释部分封装整个代码块,而不仅仅是条件表达式。

  • 您需要允许所有其他浏览器查看其他条件,同时阻止IE8 / 9看到该部分。

    (IE 10)部分没问题; IE8和IE9会知道它们不满足条件,因此即使它没有被注释掉也不会呈现标记,而IE10将永远不会看到条件(并且任何更高版本都不会),因此它将呈现标记,因为它没有隐藏在评论中。

因此:

<!--[if (IE 9) | (IE 8)]>
   <div>
      <div>
         Test
      </div>
   </div>
<![endif]-->

<!--[if (IE 10)]><!-->
   <div>
      <h3>Test</h3>
   </div>
<!--<![endif]-->