iframe 高度仅在 Firefox 中无法正确显示

Posted

技术标签:

【中文标题】iframe 高度仅在 Firefox 中无法正确显示【英文标题】:Iframe height not displaying correctly in Firefox only 【发布时间】:2012-03-03 21:50:09 【问题描述】:

我创建了一个与 DiggBar 具有相似功能的页面(即指定的标题 height 和下面的 iframe 填充页面的其余部分)。

不久前我进行了这项工作并获得了理想的结果,但突然之间,iframeheight 已从剩余页面 height100% 变为仅 44.8px。问题在于,这只发生在一个浏览器中——Ubuntu 上的 Firefox。

我认为这应该发生在所有其他浏览器中,但事实并非如此。它在 Windows 上的 IE、FF 和 Chrome 以及 Ubuntu 上的 Chrome 中正确显示。

最后,使用 Firebug,我选择了inspect element 来尝试确定发生了什么,但它只告诉我我的height 被定义为100%,但它是计算的 em> 只能是44.8px

我正在寻找有关如何最好地调试此问题的一些指导,因为我已经完全没有想法了。我不认为有必要发布产生此问题的所有代码,但如果绝对需要,请询问。

谢谢。

【问题讨论】:

包含iframe的直接父级的高度是多少? @BryanDowning iframe 的父级定义为 100% - Firebug 表示计算为 454px 您是否可以手动将iframeheight 设置为200px 之类的东西? iframe 应该有多高(以像素为单位)(我知道它应该是动态的,取决于浏览器的大小,只要告诉我它现在应该在你的窗口中是什么)?父级看起来是否实际上是454px 高?如果您将iframe 替换为div 并应用相同的样式规则,它的行为是否相同? @BryanDowning 是的,我可以手动设置ifameheight454pxiframe 的所需高度,是的,父级正确填充了这部分。如果我将iframe 替换为div,我会收到同样的问题(div 中的height 没有填充父级)- 适用于所有其他浏览器,但不是这个 FF 安装。 看不到它,我基本上没有想法。你没有任何奇怪的浮动或填充是吗?您可以通过获取父级的高度并在调整大小时动态设置 iframe 的高度来使用 javascript 修复它,但这很蹩脚... 【参考方案1】:

不幸的是,层叠样式表的 层叠 部分让我失望了。我对 iframe 的父级有另一个(我们称之为“隐藏”)引用,这导致了奇怪的 height 计算问题。

有趣的是,这只发生在我的 Ubuntu 版本的 Firefox 中。

【讨论】:

【参考方案2】:

如果您的布局结构复杂,将所有 div 的高度设置为 100% 可能会破坏页面布局。在这种情况下,我建议使用 javascript 将 iframe 的高度设置为 100%。就我而言,我使用了 JQuery,但我相信纯 javascript DOM 函数也应该可以工作。我将 iframe 的高度设置为等于父 div 的高度:

$('#doc-preview iframe').height($('#doc-preview').height());

这里的 doc-preview 是 iframe 的父 div 的 id。

确保在页面加载后运行此脚本。

【讨论】:

以上是关于iframe 高度仅在 Firefox 中无法正确显示的主要内容,如果未能解决你的问题,请参考以下文章

iframe 仅在 Firefox 中不加载

在 FireFox 的 iFrame 中显示内容时的 jQuery 高度问题

如何在 Firefox 中制作包含 div 的 iframe 100% 高度?

仅在 Chrome 上出现 iframe 高度问题

无法在 Firefox 和 IE 中将框架高度设置为 100%

在选项卡更改时动态更改 iframe 的高度?