2012-04-11 460 views
3

我知道這個get的問了很多,但是如何設置跨域iframe的動態高度,當我無法訪問IFRAME顯示的實際頁面?跨域IFRAME調整大小

+0

javascript? http://stackoverflow.com/q/7651440 – hjpotter92 2012-04-11 12:32:46

+1

「我知道這個問題很多 - 」爲什麼你再問一次? – Quentin 2012-04-11 12:34:14

+0

因爲即使嘗試了常規解決方案之後,仍然存在一個問題,所以我期待着看看是否有人有任何獨特的想法。 – 2012-04-11 12:37:41

回答

3

你不能。沒有辦法知道框架中文檔的高度來自框架外部,因爲all information about the document is protected來自第三方站點。

+0

我認爲會是這樣的情況,但是還有沒有圍繞它,即使計算維度? – 2012-04-11 13:18:51

+0

圍繞它的唯一方法是需要其他域上的頁面進行合作。由於它不在你的控制之下,它不會。 – Quentin 2012-04-11 13:21:00

+0

不需要。您需要另一端運行JS來發送跨域消息。 – Quentin 2012-04-11 14:04:19

0

如果你有機會獲得兩家母公司和iframe頁面上添加JavaScript你可以添加這兩種:

document.domain = 'mydomain.com'; 

這樣你可以避免跨域限制,並能嗅出HIGHT改變iframe高度在父母頁面

+0

謝謝,但我沒有訪問該頁面。 – 2012-04-11 12:51:20

+0

「當我無法訪問IFRAME顯示的實際頁面時」這是他的問題。 – Shoban 2012-04-11 12:58:37

+0

@Shoban - 「你這麼聰明」 - 但只是試圖幫助.....不是在同一個域名上不能統治我們的可能性,iframe內容的提供者不願意幫忙。 ... – Steen 2012-04-11 13:52:52

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:

<iframe src='http://www.example.com/my-iframe/' frameborder="0" id="my_iframe" onload="resizeCrossDomainIframe('my_iframe', 'http://www.example.com');">