firefox在iframe中没有提供正确的高度

firefox在iframe中没有提供正确的高度,firefox,iframe,height,Firefox,Iframe,Height,此错误类似于: 他得到了一个错误的号码。我的区别是,当我的帧加载时,它给出的是零 我正在尝试将其内容的高度发送到父窗口。它总是在负载时发回零。如果我将间隔设置为50毫秒,我将看到数字增加,直到正确的数字。零始终是间隔之前给出的第一个数字 内部至少有一个元素具有预定义的高度-一些使用css,一些使用内联。所以,如果元素仍在加载,就没有理由返回零 如果I console.log$('#element'),则元素看起来是隐藏的(在最新版本中褪色)。如果我在Chrome上运行它,它运行得非常完美。我还

此错误类似于:

他得到了一个错误的号码。我的区别是,当我的帧加载时,它给出的是零

我正在尝试将其内容的高度发送到父窗口。它总是在负载时发回零。如果我将间隔设置为50毫秒,我将看到数字增加,直到正确的数字。零始终是间隔之前给出的第一个数字

内部至少有一个元素具有预定义的高度-一些使用css,一些使用内联。所以,如果元素仍在加载,就没有理由返回零

如果I console.log$('#element'),则元素看起来是隐藏的(在最新版本中褪色)。如果我在Chrome上运行它,它运行得非常完美。我还尝试了nativeclientheight,它也给出了0,所以我认为它不是jQuery

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


在Firefox4 beta版上,如果没有看到您的HTML、jQuery等,这种情况是不会发生的。很难说清楚

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


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

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

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

$("#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,则我将循环,直到其报告的高度发生变化,然后平滑地设置容器大小的动画,使其符合要求。

在iframe中,您尝试访问的是加载在iframe中的元素,而不是iframe本身,对吗?另外,无论如何,您可以在JSFIDLE上复制它?是的,iframe中的元素。我现在要在小提琴上做一个演示。
offsetHeight
可不是那么幸运。iframe加载了jquery,太多的HTML无法在这里使用。基本上有一个UL,有10个LIs,我想知道它的高度。在这个iframe中,我也遇到过类似的问题,比如获取带有显示块的表单的尺寸,以及td-所有这些。基本上,高度通常是非常挑剔的。我强烈建议使用FireBug并查看布局选项卡。你应该能够找到一种方法来收回这个神奇的组合。您还应该能够设置断点并使用监视列表来查找magic属性。不过,这是我唯一的建议,对不起:)