19

我有一个带有 iframe 的页面,并且 iframe 包含需要在 quirks 模式下运行的代码(它是 Microsoft 的 Outlook Web Access,所以无论如何我们都无法修复我们的代码)。IE9 引入了一个“特性”,当父框架处于 IE9 文档模式时,它也会强制任何 iframe 进入相同的文档模式。这破坏了我们拥有 iframe 的代码。

我希望这是 IE9 中的一个错误,但我的票被拒绝为“设计使然”(如果你想看的话,这是票)

我不能在怪癖模式下运行整个网站,但我需要它只在这个页面上发生。有没有办法以编程方式打开怪癖模式渲染?无论是那个,还是一种模拟按下“兼容性视图”按钮的方法——按下这个按钮几乎可以将 IE9 变成 IE8,它也可以正常工作。

有可能做这些事情中的任何一个吗?

4

3 回答 3

10

我在 2011 年 4 月遇到了同样的问题并对其进行了相当广泛的研究。截至那时,在 IE9 中拥有“标准模式”的顶级文档和“怪癖模式”的子 iframe 中的文档的唯一方法是使用元标记让浏览器的行为就像 IE8 一样。(据我所知,情况仍然如此,Microsoft 无意更改它。)您可以使用多种元标记来更改浏览器模式,但我使用的一个有效的是:

<meta http-equiv="X-UA-Compatible" content="IE=8" />

如果您包含此元标记,则所有文档都应根据其文档类型正确呈现(根据 IE8 规则)。

但是请注意,这会阻止您使用 IE9 中的任何新支持的 css 功能,即使在顶级文档中也是如此。您将无法使用边框半径、框阴影、不透明度等。

在Will an iframe render in quirks mode 中有更多关于此的信息?,它询问了关于 ie 中的 iframe 和 doctypes 的更一般的问题。

于 2012-01-04T19:04:29.627 回答
5

顺便说一句,嵌入在 iframe 中的内容的 quirks 模式与普通的 quirks 模式并不完全相同。看到这个: http: //msdn.microsoft.com/en-us/library/gg558056 (v=VS.85).aspx

于 2011-03-25T02:27:59.777 回答
-2

您应该能够在 IFrame 和主机之间使用不同的兼容模式 - 请参阅:http: //blogs.msdn.com/b/cjacks/archive/2010/12/01/does-a-standards-web-page-在-iframe-in-a-quirks-web-page-render-in-standards-or-quirks.aspx 内部

您可以使用 X-UA-Compatible 标签明确指定您想要的兼容模式,甚至比使用按钮更多:http: //msdn.microsoft.com/en-us/library/cc288325(VS.85) .aspx

HTH。

于 2011-02-26T04:43:34.827 回答