【问题标题】:Replace IE conditional statements for IE 10+替换 IE 10+ 的 IE 条件语句
【发布时间】:2014-07-31 05:53:01
【问题描述】:

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

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

那么,如果我想要一些代码只能在 IE 8 和 9 中呈现,然后一些代码只能在 IE10、IE11 和 Firefox 中呈现,我该怎么做?

编辑:请注意,我在这里不是在谈论样式;我想在我的网页中支持重大的结构变化。例如:

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

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

【问题讨论】:

  • 我有点困惑。如果你想让一些代码被 IE10+ 和其他浏览器执行,你有什么答案吗?
  • 不,因为我希望仅在 IE8+9 中执行一个代码块,并且该块被 IE10+11 忽略。另一个仅适用于 IE10+11,被 IE8+9 忽略。
  • 条件 cmets 现已过时:MSDN。但是为什么你想让一些代码有一些特定于 IE10 / IE11(而不是在 FF / Chrome /...上做同样的事情)?
  • 看来你唯一的选择是浏览器嗅探,我不推荐任何方式。
  • 不,OP 意味着新的 IE 呈现了 "fallback CSS",这意味着旧的 IE。

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


【解决方案1】:

我得到了这个工作。条件语句的格式似乎已关闭。

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

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

【讨论】:

  • 我希望 IE10&11 不显示包含在该条件中的代码。
  • @JohnSmith 请再次清楚阅读他的回答。你做错了什么
  • @John Smith:仅供参考,答案已被编辑。看来我们都有些困惑了。
【解决方案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]-->

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-05-31
    • 2013-04-24
    • 2014-10-28
    • 2014-07-30
    • 1970-01-01
    • 2012-10-01
    • 2015-06-12
    相关资源
    最近更新 更多