【问题标题】:IE10 is reading IE8 conditional commentsIE10 正在读取 IE8 条件注释
【发布时间】:2013-09-08 09:39:36
【问题描述】:

如果您使用不受支持的浏览器 IE

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0" />
  <meta http-equiv="X-UA-Compatible" content="chrome=1"/>
  <meta http-equiv="X-UA-Compatible" content="IE=edge"/>
 ...
</head>
<!--[if lte IE 8]>
    <div style="position:absolute;bottom:0px;left:0px;background-color:orange;color:white;z-index:1000;width:250px;text-align:center;">This content is best viewed in Chrome, Firefox or any other Modern Browser. <br/><strong>Please Upgrade.  </strong></div>
<![endif]-->

【问题讨论】:

  • 它是否也响应 IE 10?你能做一个IE 8 and not IE 10 条件吗?
  • @Renan:这里的问题是 IE10根本不应该看到条件 cmets
  • (它可以看到它们,但它不应该试图解释它们。)
  • IE10 正在查看和解释条件 cmets 内部的内容,即使它们与其他 IE 版本(例如 8 和 9)明确相关。我可以做些什么来让 IE10 忽略这些 cmets? 仍然在 IE 10 中触发。这很烦人。

标签: html internet-explorer internet-explorer-10 meta conditional-comments


【解决方案1】:

所以我一直在调试并尝试修复代码以使其正常工作,我认为有两件事可能已经修复了它。
首先:条件注释是在body标签打开之前声明的,我猜因为它是一个div元素,所以它必须包含在body标签中。将它移动到体内可以修复它。
第二:我还有一个带有文档头部的脚本标签,其中包含一些 jQuery 脚本。将此标签移到正文标签的末尾可能也可以解决问题。

【讨论】:

    【解决方案2】:

    根据 Microsoft 文档 Conditional comments,“条件 cmets”功能已从 IE 10 中删除。这意味着 IE 10 会跳过“条件注释”作为简单的注释(HTML 规范就是这样)。

    我在 IE 10 上对问题中的代码进行了测试,证实了这一点。不会出现警告框,与浏览器模式设置无关。因此,听起来真实页面可能存在一些语法错误,导致某些文本显示为正常内容,而不是“条件注释”。

    【讨论】:

    • 很有趣,所以没有那个兼容性视图巫术。 (我不得不猜测一下,因为我目前手头没有测试环境,很遗憾。)
    【解决方案3】:

    在黑暗中刺痛,但也许 IE 被你的两个 X-UA 兼容标头弄糊涂了,所以它会自行回退到兼容性视图。这是我能想到的 IE10 处理条件 cmets 而不是完全忽略它们的唯一情况,因为在兼容性视图中它模拟 IE7,即lte IE 8,因此会拾取被该条件注释隐藏的内容。

    看看如果你把它们组合成一个&lt;meta&gt;标签会发生什么:

      <meta http-equiv="X-UA-Compatible" content="IE=edge, chrome=1" />
    

    【讨论】:

    • 老实说,我看不出有任何理由让 Chrome 进入; Chrome 不关注它,即使它关注它,你到底为什么要它模仿 Chrome 版本 1?
    • @Spudley:该条目适用于 Chrome Frame; 1 表示当插件可用时强制 IE 像 Chrome 一样工作。
    • 好吧,Chrome Frame 也已被弃用,但我认为它使用了frame=1....嗯,也许你是对的。我已经有一段时间没有使用它了。
    • 这对我来说似乎没有任何作用。 IE10 仍然存在此问题。
    猜你喜欢
    • 1970-01-01
    • 2010-12-14
    • 2012-12-16
    • 2010-09-15
    • 1970-01-01
    • 2013-06-08
    • 1970-01-01
    • 2019-12-06
    • 1970-01-01
    相关资源
    最近更新 更多