2012-04-11 2 views
3

Я знаю, что этот запрос получил много, но как установить динамическую высоту перекрестного домена iframe, когда у меня нет доступа к фактической странице, отображаемой IFRAME?Перекрестный домен IFRAME resize

+0

javascript? http://stackoverflow.com/q/7651440 – hjpotter92

+1

«Я знаю, что этот вопрос получил много» - так почему вы спрашиваете его снова? – Quentin

+0

Потому что даже после того, как вы попробовали обычные решения, все еще есть проблема, поэтому я искал, есть ли у кого-нибудь уникальные идеи. –

ответ

3

Вы не можете. Невозможно узнать, какая высота документа в кадре находится вне рамки, потому что all information about the document is protected с сторонних сайтов.

+0

Я думал, что так будет, но разве вокруг его вообще нет, даже для вычисления размеров? –

+0

Единственные пути вокруг этого требуют, чтобы страница на другом домене сотрудничала. Так как это не под вашим контролем, это не будет. – Quentin

+0

Нет. Вам понадобится другая сторона для запуска JS для отправки перекрестных доменных сообщений. – Quentin

0

Если у вас есть доступ, чтобы добавить JavaScript на обоих родителей и IFrame странице вы можете добавить это как:

document.domain = 'mydomain.com'; 

Таким образом, вы избежать ограничений междоменный, и может нюхать Hight изменить высоту Iframe на родительской странице

+0

Спасибо, но у меня нет доступа к странице. –

+0

«когда у меня нет доступа к фактической странице, показываемой IFRAME», это было в его вопросе. – Shoban

+0

@Shoban - «ваш настолько умный» - но просто пытаюсь помочь ..... не находясь в том же домене, что не разрешает нашу возможность, что провайдер содержимого iframe не хочет помогать. ... – Steen

0

должны прокси-страницу, хотя ваш собственный сервер (по крайней мере один раз)

<?php 
$homepage = file_get_contents('http://www.megaupload.com'); 
echo $homepage; 
?> 
<script>etc</script> 
0

У меня был этот вопрос тоже, но я, наконец, получил решение:

Поместите этот код внутри <head>:

<script type="text/javascript"> 
    function resizeCrossDomainIframe(id, other_domain) { 
    var iframe = document.getElementById(id); 
    window.addEventListener('message', function(event) { 
     if (event.origin !== other_domain) return; // only accept messages from the specified domain 
     if (isNaN(event.data)) return; // only accept something which can be parsed as a number 
     var height = parseInt(event.data) + 0; // add some extra height to avoid scrollbar 
     iframe.height = height + "px"; 
    }, false); 
    }; 
</script> 

Затем используйте этот код для фрейма:

<iframe src='http://www.example.com/my-iframe/' frameborder="0" id="my_iframe" onload="resizeCrossDomainIframe('my_iframe', 'http://www.example.com');"> 
Смежные вопросы