IE兼容模式问题

时间:2013-03-27 12:25:36

标签: asp.net internet-explorer cross-browser

我在网站和各种连接的网络应用程序中设置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

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

1 个答案:

答案 0 :(得分:4)

IE不允许您以编程方式设置Browser Mode选项。 X-UA兼容设置仅设置Document Mode,并且您无法使用适用于Browser Mode的其他设置。

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

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

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

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

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

希望有所帮助。