Как сделать высоту iframe по содержанию, полученному с другого домена?

Привет всем. Что-то гугл не помогает, пришел сюда! Есть скрипт:

var iframe = document.createElement("iframe");
iframe.src = "http://site.ru/my_block_html";
iframe.scrolling = "no";
iframe.id = 'the_frame';
iframe.name = 'the_frame';
iframe.width = '100%';
iframe.style.border = 'none';
iframe.style.position = 'absolute';
iframe.style.top = '0';
iframe.style.left = '0';
document.currentScript.parentNode.appendChild(iframe);


Он вызывается на другом сайте, типа рекламные баннеры. Все просто и давно уже съедено, а я не могу почему то найти ответ.

По ссылке src приходит хтмл блок с определенной высотой. Разумеется, iframe к ней не подстраивается. iframe.height = '100%' тут тоже не подходит. К данным блока нет доступа, так как скрипт вызывается на другом домене. А iframe.contentWindow.document.body.scrollHeight показывает высоту лишь body, а не содержимого. iframe.contentWindow.document.getElementsByTagName('a') не находит элементы. Думаю это потому, что у нас еще не загружается iframe, но iframe.onload тоже не вызывается. Так как опять же другой домен. Кто как решал/решает подобные задачи? Подскажите, пожалуйста.
  • Вопрос задан
  • 12370 просмотров
Пригласить эксперта
Ответы на вопрос 3
Petroveg
@Petroveg
Миром правят маленькие с#@&ки
Для решения задачи «в лоб» можно использовать общение между окнами.

Исходный документ
var iframe = document.createElement('iframe');

window.addEventListener('message', function (e) {
	iframe.height = e.data;
});
iframe.src = '...';
iframe.scrolling = 'no';
iframe.width = 300;
iframe.height = 300;
document.body.appendChild(iframe);

Загружаемый документ
window.addEventListener('load', function () {
	parent.postMessage(document.documentElement.scrollHeight, '*');
});

Во втором аргументе postMessage можно указать домен исходного документа.
Пример
Ответ написан
@GreatRash
Подозреваю, что никак. Получить доступ к документу вы не сможете, соответственно посчитать высоту внутри вы тоже никак не сможете. Либо подгонять на глазок, либо забить.
Ответ написан
<script type="text/javascript">
$(function() {
    var iframe = $('#ourframe', parent.document.body);
    iframe.height($(document.body).height());
});
</script>
<html>
    <body>
        <iframe id="ourframe"></iframe>
    </body>
</html>
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы