5

如果您使用的是不受支持的浏览器 IE<=8,我有一个网站页面会显示一个警告框。这在 IE 8 及更低版本中运行良好,但是今天我在 IE 10 中进行测试,它似乎也阅读了这个条件。它不应该显示警告框。我尝试了很多东西,但我不知道可能是什么问题。这是一些代码:

<!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]-->
4

3 回答 3

4

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

看看如果将它们组合成一个<meta>标签会发生什么:

  <meta http-equiv="X-UA-Compatible" content="IE=edge, chrome=1" />
于 2013-09-04T18:38:07.563 回答
2

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

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

于 2013-09-04T19:18:51.903 回答
0

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

于 2013-09-05T14:30:41.827 回答