我有一个带有iframe的页面,并且iframe包含需要在quirks模式下运行的代码(它是Microsoft的Outlook Web Access,所以我们无论如何都不能修复它)。IE9引入了一个“功能”,当父框架处于IE9文档模式时,它还会强制所有iframes进入相同的文档模式。这打破了我们有一个iframe的代码。
我希望这是IE9中的一个bug,但我的罚单被拒绝了,因为“出于设计”(here is the ticket,如果你愿意看看)
我不能在怪癖模式下运行整个网站,但我需要它只发生在这个页面上。有没有办法以编程方式打开quirks模式渲染?或者是一种模拟按下“兼容性视图”按钮的方法--按下这个按钮就可以将IE9转换成IE8,这也很好用。
这两件事都有可能做到吗?
发布于 2012-01-05 03:04:30
早在2011年4月,我就遇到过同样的问题,并对其进行了相当广泛的研究。从那时起,在IE9中让顶层文档处于“标准模式”而在子iframe中处于“怪癖模式”的唯一方法就是使用元标记让浏览器表现得像IE8一样。(据我所知,这种情况仍然存在,微软不打算改变这种情况。)您可以使用各种元标记来更改浏览器模式,但我使用的有效方法是:
<meta http-equiv="X-UA-Compatible" content="IE=8" />
如果包含此元标记,则应根据文档类型正确呈现所有文档(根据IE8规则)。
但是请注意,这会阻止您使用IE9中新支持的任何css特性,即使是在顶级文档中也是如此。你将不能使用边界半径,长方体阴影,不透明度等。
在Will an iframe render in quirks mode?上有更多关于这方面的信息,它问了一个关于ie中的iframe和doctype的更一般的问题。
发布于 2011-03-25 10:28:00
顺便说一句,iframe中嵌入内容的quirks模式与正常的quirks模式并不完全相同。看看这个:http://msdn.microsoft.com/en-us/library/gg558056(v=VS.85).aspx
发布于 2011-02-26 12:43:35
您应该能够在IFrame和主机之间使用不同的compat模式-请参阅:http://blogs.msdn.com/b/cjacks/archive/2010/12/01/does-a-standards-web-page-inside-of-an-iframe-in-a-quirks-web-page-render-in-standards-or-quirks.aspx
您可以使用X-UA-Compatible标记指定想要显式使用的compat模式,甚至比使用按钮指定的更多:http://msdn.microsoft.com/en-us/library/cc288325(VS.85).aspx
HTH。
https://stackoverflow.com/questions/5123326
复制相似问题