javascript - 如何在 iframe 内容变化时获取它的高度?

标签 javascript jquery html css css-position

我有一个 iframe 从我的网站加载到一个页面中,我需要根据 iframe 内容的高度动态地将它定位到页面的中心,我对我的代码没有任何问题使用除了 iframe 内容的高度永远不会返回低于内容变小时的值(如果这有意义的话)。

js 可以识别内容高度何时增长,但不能识别何时缩小。

例如如果我有一个 400 像素高的页面,然后某些内容动态更改为 420 像素,我的代码将识别它是 420 像素高,但是如果它更改为 350 像素,例如,我的代码将仍然将其视为420px 高。我该如何解决这个问题?

代码:

function place()
{
    var w = $(window).width();
    w-=1000;
    w/=2;
    if(w<12)
    w = 12;
    $("#div").css("left",""+w+"px");
    $("#closeDiv").css("left",""+(w-12)+"px");

    var h = $(window).height();
    var ifh = document.getElementById("inner").contentWindow.document.body.scrollHeight;
    document.title = ifh;
    h -= ifh;
    h /= 2;
    if(h < 20)
    h = 20;
    $("#div").css("top",""+h+"px");
    $("#div").css("height",""+ifh+"px");
    $("#closeDiv").css("top",""+(h-12)+"px");
}

文档标题继续显示 420px,即使我知道内容小于该值。 .offsetHeight 也会出现同样的问题。

感谢您的帮助!

解决方案更新

好的,所以我使用了我标记为解决问题的答案中的代码,因为我确实使用了它并且它帮助我解决了这个问题值得赞扬,但这里涉及的实际问题是我有高度iframe 设置为 100% 的容器框;一旦我将其设置为 99%,问题就解决了。不知道为什么……但是嘿!

感谢您的帮助!

最佳答案

尝试这样的事情:

var iHeight;
if ($("iframe").length > 0) iHeight = $($("iframe")[0].contentDocument || $("iframe")[0].contentWindow.document).height();

虽然老式的 ele 调用应该有效:

var iHeight;
if ($("iframe").length > 0) iHeight = $("iframe").height();

关于javascript - 如何在 iframe 内容变化时获取它的高度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13406279/

相关文章:

javascript - 下划线: how to retain the order of this array after it's sorted?

jQuery 相邻兄弟选择器

html - npm http-server 下载 index.html 而不是服务

javascript - 继续嵌套 for 循环

javascript - 在 Javascript 中删除或隐藏文本区域中的 html 标签

javascript - 提交表单时隐藏 DIV

php - 在 Laravel Ajax 请求验证中获取错误字段名称

jquery - div中的滚动条滚动而不是页面滚动条

使用 webkit 缩小时的 HTML 边框问题

javascript - 一个接一个淡入p个标签