iFrame自动调整大小

时间:2010-06-25 20:36:47

标签: asp.net javascript iframe javascript-events

在“击败死马”评论开始之前,让我澄清一下我想要做些什么来看看是否有人可以帮助我。

我有一个带有iFrame的父窗口。 iFrame中的内容是从一个单独的域加载的,这是我认为我的问题开始的地方,尽管它需要这样。当页面最初加载时,我有以下运行:

    <script language="javascript" type="text/javascript">
    var reportFrame = document.getElementById('report');

    function resizeIframe() {
        var height = document.documentElement.clientHeight;

        height -= reportFrame.offsetTop;

        // not sure how to get this dynamically
        height -= 20; /* whatever you set your body bottom margin/padding to be */

        reportFrame.style.height = height + "px";

    }

    reportFrame.onload = resizeIframe;
    window.onresize = resizeIframe;

</script>

这很有效。 iFrame没有任何滚动条,看起来很完美。我遇到的问题是iFrame有一个按钮,可以在框架上进行回发。我需要在iFrame重新加载时运行此脚本,以防止显示任何滚动条。由于子页面位于一个单独的域中,我无法将它从一个函数调用到父级(非常确定这是XSS发挥作用的地方)所以我需要想出另一种方式让父母知道它需要运行此脚本,因为iFrame正在重新加载。

有什么建议吗?

1 个答案:

答案 0 :(得分:2)

您可以添加一个定时检查并定期调整大小的计时器:

setInterval( "resizeIframe()", 1000 ); //check every second

[编辑 - 调整大小脚本的链接]

有关调整iframe大小的脚本,请查看http://geekswithblogs.net/rashid/archive/2007/01/13/103518.aspxResizing an iframe based on content