0

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

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

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

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

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

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

4

3 回答 3

1

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

于 2010-06-09T19:34:18.097 回答
0

Quirks 模式用于指您在未指定 doctype 时获得的渲染(或者您指定了一个非常旧的 doctype,请参阅Wikipedia 关于该主题的文章中的表格)。该渲染基于 IE5(或 5.5,我忘记是哪一个)。这在 IE7 和 IE8 之间没有变化。

如果您在 IE8 中以 IE7 或 quirks 模式呈现文档时遇到不同的行为,那么这表明问题与版本检查有关 -因为这是浏览器模式控制的内容。如果您的版本检查没有将 IE8 与 IE7 区别对待,并且文档模式是 IE7 或 quirks 模式,那么您不应该看到任何差异。

于 2010-06-09T19:33:58.453 回答
0

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

<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 和其他无关部分已被解析,因此重置它会导致表再次显示。

于 2010-09-28T15:57:56.470 回答