2015-04-17 71 views
0

有沒有什麼辦法根據其內容調整跨域iframe,這將工作在Firefox 3.6.10? 我認爲postMessage命令有效,但我找到的解決方案在Firefox 12中工作,但不在Firefox 3.6.10中。或者,這可不是問題。跨域iframe調整大小爲Firefox 3.6.10

正如我在另一個問題中所寫的,youtube似乎只是將iframe的內容嵌入到註釋部分的頁面中,這就是它動態調整大小的方式。這基本上可以解決每一個iframe問題,因爲HTML將被嵌入到網站的本地HTML中,並且沒有相同的原始策略會阻止任何東西。當我問到這個問題時,我沒有得到答案。

所以,提前謝謝你,或者如果你不喜歡人們說的話,我會很感激,如果有人會幫助。

而且我也可以控制幀內的內容!

(我需要這個腳本,使得YouTube的樣子2012年左右,所以更多的人會很感激了。)

回答

0

溶液我發現/修改:

在頁面

其中包含的IFRAME:

<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; 
     if (isNaN(event.data)) return; 
     var height = parseInt(event.data) + 32; 
     iframe.height = height + "px"; 
    }, false); 
    } 

在iframe代碼

<iframe id="my_iframe" onload="resizeCrossDomainIframe('my_iframe', '**whatever domain your iframe content is on**');"></iframe> 

用於連續調整大小,我把這種在頁面包含的iframe:

<script> 

var interval = setInterval(function(){ 
resizeCrossDomainIframe('my_iframe', '**whatever domain your iframe content is on**'); 
}, 100); 
</script> 

的IFRAME內容頁面上:

<script> 
window.onload = function() { 
    window.parent.postMessage(document.body.scrollHeight, '**whatever domain your iframe containing page is on**'); 
} 
</script> 

這對於連續調整大小:

<script> 

var interval2 = setInterval(function(){ 
window.parent.postMessage(document.body.scrollHeight, '**whatever domain your iframe containing page is on**'); 
}, 100); 
</script> 

CORRECTION :不需要第一個間隔腳本,因爲每次發送消息時,eventlistener都會執行該函數。它只會導致緩慢

+0

我以爲你問題是PostMessage在FireFox 3.6中不起作用? – user2684310

+0

我以爲是。但似乎是這樣 –

0

,你可以嘗試在GitHub上看着這一點。

https://github.com/davidjbradshaw/iframe-resizer

+0

我不認爲這將適用於我的版本,但謝謝 –

+0

似乎您需要升級到至少FireFox 6.爲什麼你打擾這樣一箇舊版本的瀏覽器? – user2684310

+0

其對我來說是最好的版本...我發現了一個解決方案,但我應該發佈它嗎? –