从其他域加载内容后,可以调整iFrame的大小

Possible to resize iFrame after loading contents from a different domain?

本文关键字:调整 iFrame 其他 加载      更新时间:2023-09-26

我希望在加载页面上的iFrame内容后调整其大小。不幸的是,iFrame中加载的内容来自不同的域。我尝试使用以下代码来调用父窗口中的函数,但它引发了安全错误:

<body onload="parent.document.someFunction(document.body.scrollHeight);">

有没有一种可靠的方法可以使用其他域的内容(我们可以访问这些域并可以FTP)来实现这一点,或者我需要告诉客户端他们必须在自己的域上镜像内容吗?

请参阅这篇文章和我的答案:从iframe 调用父窗口函数

这是可能的,但并不容易。你得花点功夫才能使它发挥作用。

我相信,因为您可以访问框架域和框架页域,所以您将能够使用document.domain-in-the-head技巧。

<script>
    document.domain = "mydomain.com";
</script>

更新:

我可以检查以下内容吗?:

  1. 你把文档.domain <script>放在两页的开头了吗?

  2. 两者是否具有完全相同的字符串,即两者都具有"subdomain.mydomain.com"还是都具有"mydomain.com"?通常,您可以使用此选项来确保带边框的页面与父页面具有相同的文档域。

  3. 从框架页调用父函数后,是否仍然会出现安全错误?

  4. 如果没有,这是我用来调整框架大小的函数。它位于镶框页面的首页。

    window.ResizeFrame = function (newHeight) {
        if (window.parent && window.parent.document) {
            var $frame = $(window.parent.document).find("#frame-id");
            if ($frame.length) {
                if (typeof (newHeight) === "number") {
                    $frame.css("height", newHeight);
                }
            }
        }
    };
    

让我知道进展如何!