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

Posted

技术标签:

【中文标题】在 FireFox 的 iFrame 中显示内容时的 jQuery 高度问题【英文标题】:jQuery height issues when content is displayed in an iFrame in FireFox 【发布时间】:2012-07-09 21:46:27 【问题描述】:

我正在制定一个日历/时间表,它需要休息时间才能跨越包含事件的整个高度。下面的代码在 FF/Chrome 和 IE 中运行良好。在 Firefox 中通过 iFrame 加载内容时会出现问题,高度始终设置为零。只有重新加载 iFrame 时,页面才会正确显示。

here is DEMO

$(window).load(function () 
    $(".event").each(function () 
        var height = $(this).height();
        $(".note, .break").each(function () 
            $(this).height(height);
        );
    );
)

我正在为 FF 寻找一致的解决方案或解决方法,以便在 iFrame 的首次加载时正确应用高度。

提前致谢。

【问题讨论】:

我在jsFiddle上添加了一个例子jsfiddle.net/fBTeg/3 【参考方案1】:

方式 1:用 div 包裹你的 iframe 得到 float:left;并在fireforx上计算div的高度。

尝试计算这个 div 的高度,而不是 iframe 的..

<div style="float:left">
    <iframe></iframe>
</div>

.load() usage

方式2:

$(document).ready(function () //if u wont define more specific element, use docment ready
    $(".event").each(function () 
        var height = $(this).height();
        $(".note, .break").each(function () 
            $(this).css('height':height+'px');//to change css height
            //$(this).attr('height',height);//to change inline attr height
        );
    );
)

【讨论】:

我之前使用的是准备好的文档并更改为 load() 事件以防出现时间问题。不幸的是,您的解决方案与我已经遇到的结果相同。 你试过用 div 包裹你的 iframe 吗?并在fireforx上计算div的高度? 问题不在于 iFrame 高度,问题在于加载到 iFrame 中的页面,并且仅当它显示在 iFrame 中时。我添加了一个在 iFrame 中显示的页面示例(参见上面的 OP)。 jsfiddle.net/fBTeg/6 它提醒不同的值,我也检查了 firefox,相同的变量 72 96 169,你不能给高度不同的值, 它会做的,这是正确的,那里有 3 个事件,所以你通过添加警报获得 3 个高度。高度仅适用于每个 .event 内具有 .break 或 .note 类的元素。例如。事件 1 中断设置为第一个事件容器的高度。等等等等。

以上是关于在 FireFox 的 iFrame 中显示内容时的 jQuery 高度问题的主要内容,如果未能解决你的问题,请参考以下文章

Firefox 不在 jquery .load() 上显示 iFrame 内容

YouTube iFrame 的 Fancybox/Fancyapp 滚动条——在 Firefox 中显示

Firefox 在 iframe 中没有给出正确的高度

在 Firefox 中使用 javascript 设置 iframe 的内容失败

Firefox 中 slimScroll.js + iframe 的问题

iframe 在 Firefox 中不起作用