如何根据iframe中的动态内容更改iframe的高度?

时间:2011-11-26 15:36:22

标签: jquery iframe dynamic height

我有一个包含动态内容的iframe。如果答案具体问题,则显示其他信息(隐藏的div变为可见)。我希望iframe的高度能够扩展。我知道这里已经多次询问过这个问题,但似乎通常是在加载iframe中的不同页面时,而不是在iframe中动态更改内容时。

这是我尝试使用jsFiddle放在一起的一个例子:

iframe:http://jsfiddle.net/B4AKc/2/

页面:http://jsfiddle.net/PmBrd/

有什么想法吗?

5 个答案:

答案 0 :(得分:11)

这对你有用吗?

http://jsfiddle.net/PmBrd/1/

代码:

var iframe = document.getElementById("ifr").contentWindow;

iframe.$(".toggle_div").bind("change", function () {
    $("#ifr").css({
        height: iframe.$("body").outerHeight()
    });
});

由于您提到他们属于同一个域,因此只需要与您的真实应用做类似的事情。

答案 1 :(得分:5)

检查一下。 您可以使用javascript本身获取iframe大小 使用setInterval,每次都检查窗口高度。

< iframe src='<YOUR_URL>' frameborder='0' scrolling='no' id='frame_id' style='overflow:hidden; width:984px;' >
</iframe>

<script language="javascript" type="text/javascript">
setInterval(function(){
    document.getElementById("frame_id").style.height = document.getElementById("frmid").contentWindow.document.body.scrollHeight + 'px';
},1000)
</script>

Check this

答案 2 :(得分:1)

Esailija的答案很好,但是这个更好。“

$('#ifr').contents($(".toggle_div")).bind("change", function () {
    $("#ifr").height($("#ifr").contents().find("html").height());
});

答案 3 :(得分:1)

可能有点晚了,因为所有其他答案都来自2011 :-)但是...... 这是我的解决方案。在实际的FF,Chrome和Safari 5.0中进行了测试

$(document).ready(function(){
    $("iframe").load( function () {
        var c = (this.contentWindow || this.contentDocument);
        if (c.document) d = c.document;
        var ih = $(d).outerHeight();
        var iw = $(d).outerWidth();
        $(this).css({
            height: ih,
            width: iw
        });
    });
});

希望这对任何人都有帮助。

答案 4 :(得分:0)

看一下jQuery postMessage插件。它允许您将子帧中的信息传递给父级。您可以更改子框架内的代码,以便在内容更改时将内容高度发布到父级,然后父级可以使用它来相应地调整iframe的大小。

两页必须才能在同一个域上运行。

我希望这有帮助!