首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >火狐在iframe中没有给出正确的高度

火狐在iframe中没有给出正确的高度
EN

Stack Overflow用户
提问于 2011-02-16 19:41:53
回答 3查看 822关注 0票数 2

此bug类似于:

jQuery reports incorrect element height in Firefox iframe

他拿回了一个错误的号码。我的区别是,当我的身体负荷-它是零。

我试图将其内容的高度发送到父窗口。它总是在载货时发回零。如果我设定50毫秒的间隔,我会看到这个数字增加到正确的数字为止。零总是区间之前给出的第一个数字。

内部至少有一个元素有一个预定义的高度--有些带有css,有些带有内联。因此,如果元素仍在加载,则没有理由将其发回零。

如果我console.log $('# element ' ),元素看起来是隐藏的(在最新版本中已褪色)。如果我在Chrome中运行这个,它会运行得非常完美。我也尝试了原生的clientHeight,它也提供了0,所以我不认为它是jQuery。

编辑:在我试图计算高度之前,元素是通过JS添加的。他们一开始就不在页面上可能是个问题。试着制作一个简单的演示页面来发布。

这在Firefox 4测试版上不会发生。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-02-16 22:10:17

在计算时,iframe是display: none,因为在设置所有内容之前,我不想显示它。因此,尽管从技术上讲,它是一个不同的窗口,但它仍然认为元素的父窗口是不显示的。

票数 2
EN

Stack Overflow用户

发布于 2013-04-16 09:40:07

我知道这是一个老问题,但我在Firefox中也遇到了类似的问题,一个iframe预加载到一个引导模式中,当最后显示出来时,它被截断了。在此之前,我无法计算出正确的高度,但我可以通过一点jQuery,合理地(对最终用户)调整它的大小。我在这里回答,以防其他人继续寻找类似问题的解决办法:

代码语言:javascript
运行
复制
$("#myIframe").load(function() {
  $m = $(".modal-body");
  var mh = $m.height();

  var wait = setInterval(function() {
    var ih = $("#myIframe").contents().find("body").height();
    if (ih == mh) {
      clearInterval(wait);
    } else if (ih > 0) {
      clearInterval(wait);
      $m.animate({ height: ih });
    }
  }, 50);

  $(".modal").modal("show");
});

其思想是,在加载iframe时,如果浏览器计算其高度为0,则我循环直到其报告的高度发生变化,然后平滑地动画化容器大小以适应。

票数 3
EN

Stack Overflow用户

发布于 2011-02-16 19:53:06

如果没有看到HTML、jQuery等,就很难确定。

我要说,当返回的高度似乎不准确时,我很幸运地使用了offsetHeight。你试过这个吗?

编辑:另一个想法:我在过去注意到,在内容完全加载之前通过JavaScript访问IFRAME是有问题的。只是要记住一些事情。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5021303

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档