我在网站和各种连接的网络应用程序中设置 IE 兼容性模式时遇到问题,在对该主题进行了大量研究后,我仍然对其工作原理感到有点困惑。基本上,我正在开发一个公司网站,该网站在通过 IE10 访问时出现问题,并尝试将其设置为在 IE9 兼容模式下运行。该网站有许多第三方控件和各种其他元素无法在 IE10 上运行,我还没有时间完全更新该网站(这是一个相当大的网站)。我发现的所有内容都告诉我通过将代码添加到 Web 配置文件或 header 的元标记中来设置兼容性模式。看起来很简单。
<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
请注意,此处仅影响文档模式,这与我手动进行更改时不同。如前所述,我对此进行了大量研究,但仍然不太明白浏览器模式和文档模式之间的区别,或者为什么我似乎需要更改的模式不受每个人似乎在这里推荐的解决方案的影响。谁能帮助我准确理解这意味着什么以及要点是什么,更重要的是有人知道如何做我在这里想要完成的事情吗?
最佳答案
IE 不允许您以编程方式设置 Browser Mode
选项。 X-UA-Compatible 设置仅设置 Document Mode
,并且没有其他可用于 Browser Mode
的设置.
幸运的是,在大多数情况下,您不需要担心 Browser Mode
无论如何。
Document Mode
是改变实际渲染引擎的引擎;这是IE在IE9模式下显示内容的重要一环。
Browser Mode
不太重要。所有这一切都是设置用户代理字符串 - 即浏览器发送到服务器以识别您正在使用的浏览器的文本。页面的实际渲染不受此设置的影响。
因此,假设您的网站没有通过查看用户代理字符串来执行任何服务器端浏览器嗅探,那么您真的不需要担心 Browser Mode
完全没有。
如果您正在进行浏览器嗅探,那么它可能会影响您。如果是这种情况,那么您会有点困难,因为您无法强制浏览器更改模式,但在这种情况下,我建议您尝试不同的技术。人们普遍认为,出于多种原因,嗅探用户代理字符串无论如何都是一个坏主意。在这种情况下,您可能最好使用客户端功能检测。
希望有帮助。
关于asp.net - IE兼容模式问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15658744/