Можно ли изменить размер iFrame после загрузки содержимого из другого домена? - PullRequest
0 голосов
/ 28 февраля 2012

Я хочу изменить размер iFrame на странице после загрузки его содержимого.К сожалению, контент, загружаемый в iFrame, находится в другом домене.Я пытался использовать следующий код для вызова функции в родительском окне, но он выдает ошибки безопасности:

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

Есть ли надежный способ справиться с этим, используя контент из других доменов (у нас есть доступк этим доменам и может ли FTP) или мне нужно сообщить клиенту, что он должен зеркально отображать содержимое в своем собственном домене?

1 Ответ

0 голосов
/ 28 февраля 2012

Пожалуйста, посмотрите этот пост и мои ответы: Вызов функции родительского окна из iframe

Это возможно, но не просто.Вам нужно немного взломать, чтобы заставить его работать.

Я считаю, что, поскольку у вас есть доступ к домену с рамкой и доменам с рамкой, вы сможете использовать document.domain-in-theтрюк с головой.

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

Обновление:

Могу я просто проверить следующее?:

  1. Вы положили document.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);
                }
            }
        }
    };
    

Дайте мне знать, как это происходит!

...