有没有办法强制IE8中的页面在IE7怪癖模式或IE8 Compat View Quirks模式下渲染?

时间:2010-06-09 19:27:28

标签: jquery html cross-browser doctype quirks-mode

注意:当我说“浏览器模式”和“文档模式”时,我指的是IE8开发人员工具菜单栏中的渲染选项。

我们在Internet Explorer 8中注意到我们网站上的奇怪功能。当用户点击“添加到购物车”按钮时,将调用jQuery .load()方法来请求新的网页,然后将其放入javascript“弹出”窗口。在IE7(以及Firefox,Chrome和Safari)中,一切都很好用。

但是,在IE8中,所有<table>元素(及其子元素)都隐藏在通过.load()加载的内容中。这只发生在IE8 Quirks模式(页面默认设置)而不是IE7 Quirks模式。

我知道我可以使用<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" /><meta http-equiv="X-UA-Compatible" content="IE=7" />标签告诉IE8它应该如何呈现文档,但这会强制页面呈现为IE7标准IE8“浏览器模式”中的文档

奇怪的是,我需要强制页面在IE7浏览器模式或IE8兼容性视图浏览器模式下以怪异模式渲染。这可能吗?

这也引出了一些问题:IE8怪癖模式是否应该与IE7怪癖模式相同?

3 个答案:

答案 0 :(得分:1)

当浏览器处于Quirks模式时,你不能指望它有什么好处。使您的代码符合html标准,以便浏览器进入标准模式,然后您可以开始查看您的JavaScript问题。

答案 1 :(得分:0)

Quirks模式用于指代未指定doctype时获得的呈现(或者您指定了非常旧的doctype,请参阅Wikipedia's article on the topic处的表)。该渲染基于IE5(或5.5,我忘记了哪一个)。这在IE7和IE8之间没有变化。

如果您在IE8中以IE7或怪癖模式呈现文档时遇到IE8中的不同行为,则表明该问题与版本检查有关 - because that's what the Browser Mode controls。如果您的版本检查不会以不同于IE7的方式处理IE8,并且文档模式是IE7或怪癖模式,那么您不应该看到任何差异。

答案 2 :(得分:0)

我遇到同样的问题,我发现IE7和IE8浏览器模式之间存在行为差异,这不是由版本检查引起的。当您尝试加载到innerHTML中的内容包含DOCTYPE时,在IE8浏览器模式下,表中的内容将不会显示,但它将在IE7和IE7模式下显示(所有这些仅适用于文档的怪癖模式)模式)。以下HTML示例演示了该问题(文本“Inside Table”未在IE8浏览器模式下显示):

<html>
    <head>
        <title>DOCTYPE Browser mode test</title>
    </head>
    <body>
        <div id="content">Original Content</div>

        <button type="button" onclick="document.getElementById('content').innerHTML = '<!DOCTYPE>Outside table <table>Inside Table</table>';">Change Content!</button>
    </body>
</html>

不幸的是我还没有找到一种方法来获得IE7浏览器模式的怪癖模式。您可以通过执行类似“document.getElementById('content')。innerHTML = document.getElementById('content')。innerHTML”之类的方法解决问题,因为DOCTYPE和其他无关的部分已被解析出来,因此重置它会导致要再次显示的表格。