2013-03-27 127 views
2

我在设置网站和各种连接的网络应用程序的IE兼容模式方面存在问题,在对这个问题进行了大量研究之后,我仍然对这是如何工作感到困惑。基本上我正在通过IE10访问时遇到问题的公司网站上工作,并试图将其设置为在IE9兼容模式下运行。有许多第三方控件和该网站的其他各种元素都不适用于IE10,并且我没有时间完全更新此网站(它是一个相当大的网站)。我发现的所有东西都告诉我要设置兼容模式,方法是将代码添加到Web配置文件或标题中的元标记中。看起来很简单。IE兼容性模式问题

<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 

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

+0

嗨awhitehouse,我也有同样的问题是否有任何其他方式来修复除了改变目标框架之外? – 2013-09-29 08:24:01

+0

对我来说,这个网站在手动设置为兼容模式时效果很好,但是当尝试从元标记浏览器模式尝试相同时未设置为兼容。 – 2013-09-29 08:24:49

回答

4

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

然而幸运的是,在大多数情况下,您无需担心Browser Mode

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

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

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

如果你做浏览器嗅探,那么它可能会影响你。如果是这种情况,那么你将会被卡住,因为你不能强制浏览器改变模式,但在这种情况下,我会建议你尝试一种不同的技术。普遍认为,出于各种原因,嗅探用户代理字符串无论如何都是一个坏主意。在这种情况下,使用客户端功能检测可能会更好。

希望有所帮助。