注意:当我说“浏览器模式”和“文档模式”时,我指的是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怪癖模式相同?
答案 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和其他无关的部分已被解析出来,因此重置它会导致要再次显示的表格。