【问题标题】:How to force Iframe to run quirks under a standard parent frame如何强制 iframe 在标准父框架下运行怪癖
【发布时间】:2012-07-30 14:37:39
【问题描述】:

我们有一个父页面,它必须在 IE9 标准模式下运行,执行 HTML5 命令。 下面我们有一个必须在兼容模式 (IE7/8) 下运行的 iframe。

据我了解,在 IE9 中,iframe 从父级继承其文档类型。那是对的吗? 这个问题有什么解决办法吗?可以以某种方式在标准模式 doctype 父框架下使用 quirks doctype 执行 iframe 吗? 谢谢, 塔尔

【问题讨论】:

  • 看到这个答案 -> stackoverflow.com/a/5624373/572939
  • 这些不提供答案 - 因为它强制整个页面在 IE7 模式下运行。所需的行为是在 parent 中启用 IE9 模式,但在 iframe 内部启用 quirks 模式。
  • 你可以使用一些规范化技术来修复子 iframe 渗入其父级的丑陋吗?例如。 necolas.github.com/normalize.css ?
  • 前段时间我为一个项目做了广泛的研究(比我想在这里发布的链接更多)。我的结论是:绝对没有办法,如果有的话会解决很多问题。话虽如此,使用 VB.NET 和 WebBrowser 控件(如果这是您的技术堆栈的一部分)有可能(我不知道您的用例)实现类似的结果。

标签: html iframe


【解决方案1】:

不可能在 IE9 中的子 iframe 中触发不同的呈现模式,此处正式记录如下:http://msdn.microsoft.com/en-us/library/gg558056(v=vs.85).aspx(已添加重点):

虽然较新的渲染引擎仅在 Windows Internet 时使用 Explorer 检测到 HTML 页面请求了最高级别的 支持标准,子页面并不总是如此 可能会在 frame 和 iframe 元素中加载。 因为只有 一次可以激活一个渲染引擎,IE9模式还包括 Quirks 模式的仿真。

但是,正如它所说,您可以触发 “怪癖模式仿真”,这会使 IE9 呈现引擎处于活动状态,但会以多种方式改变其行为以匹配旧的怪癖模式。

JSBin 演示:http://jsbin.com/ozejuk/1/

这个例子有一个样式为background: #ff0000; background: 00ff00; border-radius: 30px的div ...在怪癖模式下,不带#的十六进制颜色被接受。在 IE9 模式下它们不是。在 IE9 中加载演示会在父页面中显示一个红色 div,在 iframe 中显示一个绿色 div(但仍带有圆角)。

如何在 iframe 中触发 quirks 模式模拟:http://msdn.microsoft.com/en-us/library/gg558096(v=vs.85).aspx

短版:省略DOCTYPE,添加:<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />

模式仿真对渲染的影响的完整列表:http://msdn.microsoft.com/en-us/library/gg558047(v=vs.85).aspx

【讨论】:

猜你喜欢
  • 2012-08-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-01
  • 1970-01-01
  • 2020-03-31
  • 2011-12-04
相关资源
最近更新 更多