2012-02-28 4 views
0

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

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

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

ответ

0

Пожалуйста, смотрите этот пост и мои ответы: Calling a parent window function from an iframe

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

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

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

Update:

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

  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); 
          } 
         } 
        } 
    }; 
    

Позвольте мне знать, как она идет!

+0

К сожалению, это не решение проблемы. –

+0

Я разместил обновление с дополнительной информацией о том, как работает мой сценарий. –

+0

Эй, там - так это работало на разных страницах моего собственного домена, но не на клиенте. Не знаю, почему, но я считаю ваш ответ правильным, так как он работал в одном случае. Спасибо!! –

Смежные вопросы