兼容模式的 IE 问题

IE issue with compatibility modes

我想知道当我将浏览器置于兼容模式时,它如何知道要使用文档中找到的 header 标签的设置。如果我们有所有版本回溯到 EI7 的逻辑,它会使用最远的回溯吗?所以在这种情况下,它在 comp 模式下选择 7,但是如果我们只提供给 IE8,那么它会为那个实例选择 IE8 吗?那么问题来了,为什么IE 11兼容模式根据我在IE中的调试器设置为IE7标准呢?如果我删除 [if IE7] 代码片段,它会在浏览器中将其设置为 IE8 标准吗?我们刚刚停止支持 IE7,所以我才问这个问题。

[if IE 7 ]>    <html class="ie7"
[if IE 8 ]>    <html class="ie8" 
[if IE 9 ]>    <html class="ie9"

您在问题中引用的代码 NOT 告诉 IE 使用什么模式。这段代码所做的是查看 IE 已经处于的模式,并做出相应的反应。

因此,您的问题的答案是:否:从此代码中删除特定于 IE7 的块不会阻止 IE 进入 IE7 模式。

如果你想强制 IE 进入特定模式,你需要使用的代码是 X-UA-Compatible 元标记。

你需要在头顶附近画一条线 HTML,看起来像这样:

<meta http-equiv="X-UA-Compatible" content="IE=edge">

在内容中放入 edge 告诉 IE 使用它的最佳可用模式(因此 IE11 将处于 IE11 模式)。如果你想要一个特定的 IE 模式,然后输入 IE8 或类似的而不是 edge.

此外,您查看页面的方式也会影响文档模式。

  • 如果您在 Internet 上(或通过本地 Web 浏览器)查看页面,该页面将在 Internet 区域中打开。在这种情况下,x-ua-compatible 指令优先;根据设置,<DOCTYPE> 可能 also have an impact.
  • 如果您使用“文件”菜单、从文件资源管理器或从网络路径打开页面,该页面将在 Intranet 区域中打开。默认情况下,这意味着您的页面以 IE7 兼容模式打开,尽管可以是 changed through settings.
  • 托管 webBrowser 控件的应用程序默认为 IE7,除非您使用 registry change 覆盖它。 (请注意,目前尚不清楚 Windows 10 是否支持此功能)。

为了获得最佳效果:

  1. 使用 HTML5 <DOCTYPE> 指令。
  2. 使用内容设置为 IE=edgex-ua-compatible 元数据。
  3. 通过本地网络浏览器查看本地页面。
  4. HTML5 的代码,检测功能,提供优雅的回退,并且不用担心各个浏览器之间的个体差异。

希望这对您有所帮助...

-- 兰斯