2

我在网站和各种连接的网络应用程序中设置 IE 兼容模式时遇到问题,经过对该主题的大量研究,我仍然对它的工作原理感到有些困惑。基本上,我在一个公司网站上工作,该网站在通过 IE10 访问时出现问题,并试图将其设置为在 IE9 兼容模式下运行。有许多第三方控件和网站的各种其他元素在 IE10 上不起作用,我还没有时间完全更新这个网站(这是一个相当大的网站)。我发现的所有内容都告诉我通过将代码添加到 Web 配置文件或在标头中的元标记中来设置兼容模式。似乎很容易。

<httpProtocol>
  <customHeaders>
    <clear />
    <add name="X-UA-Compatible" value="IE=9" />
  </customHeaders>
</httpProtocol>

或者

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

现在,当我手动设置兼容模式(不是在代码中,而是在我自己的浏览器中)时,一切正常,这就是我通过 IE 开发人员工具看到的。

Browser Mode: IE10 Compat View    Document Mode: IE9 Standards

这里的问题是,当我通过上面列出的方法之一在我的代码中设置它时,这就是我所看到的,似乎没有任何改变。

Browser Mode: IE10    Document Mode: IE9 Standards

请注意,这里只有文档模式受到影响,这与我手动进行更改时不同。如前所述,我对此进行了大量研究,但仍然不太了解浏览器模式和文档模式之间的区别,或者为什么我似乎需要更改的模式不受每个人似乎在这里推荐的解决方案的影响。任何人都可以帮助我准确理解这意味着什么以及重点是什么,更重要的是,有人知道如何做我在这里想要完成的事情吗?

4

1 回答 1

4

IE 不允许您以编程方式设置该Browser Mode选项。X-UA-Compatible 设置仅设置Document Mode,并且没有其他设置可以用于Browser Mode.

然而,幸运的是,在大多数情况下,您无论如何都不需要担心Browser Mode

Document Mode是改变实际渲染引擎的那个;这是 IE 在 IE9 模式下显示内容的重要一环。

Browser Mode不那么重要。所有这一切都是设置用户代理字符串 - 即浏览器发送到服务器以识别您正在使用的浏览器的文本。页面的实际呈现不受此设置的影响。

因此,假设您的站点没有通过查看用户代理字符串来进行任何服务器端浏览器嗅探,那么您根本不需要担心Browser Mode

如果您正在进行浏览器嗅探,那么它可能会影响您。如果是这种情况,那么您将有点卡住,因为您无法强制浏览器更改模式,但在这种情况下,我建议您尝试不同的技术。人们普遍认为,出于各种原因,嗅探用户代理字符串是一个坏主意。在这种情况下,使用客户端特征检测可能会更好。

希望有帮助。

于 2013-03-27T13:36:12.027 回答