2010-06-16 126 views
17

我試圖根據其內容調整大小(製作更大或更小)的iframe。點擊每個頁面後,會調用一個調整大小的方法。iframe在Chrome/Safari瀏覽器中使用scrollheight調整大小

在Chrome中,我可以使iframe變大但不能變小。 document.body.scrollHeight始終是最大的價值。

因此,如果一個大頁面設置了#iframe.height ='620px',並且某人點擊了較少內容的頁面鏈接,scrollHeight將保持在620px而不是減少。

在Chrome/Safari中處理此問題的正確方法是什麼?

回答

21

在您要求iframe中文檔的高度之前,您應該將iframe對象的高度設置爲「auto」。事情是這樣的:

objIframe = document.getElementById('theIframeId');  
objIframe.style.height = 'auto'; 

現在:

document.body.scrollHeight 

返回文檔的實際高度。

+0

輝煌!幾天來一直在與此戰鬥! – 2013-03-06 23:22:44

+2

如果有其他人遇到這個問題,對我來說固定的是爲Firefox設置'document.body.scrollHeight',爲Chrome和其他任何設置'document.documentElement.scrollHeight'...我的例子使用postMessage進行跨域 'if(isFirefox){ \t \t \t \t e.source.postMessage('height:'+ document.body.scrollHeight,e.origin); \t \t \t}否則{ \t \t \t \t e.source.postMessage( '高度:' + document.documentElement.scrollHeight,e.origin); \t \t \t}' – nitsuj 2014-02-19 21:35:13

+1

謝謝你的這個答案,我已經包括在我的iFrame庫https://github.com/davidjbradshaw/iframe-resizer – 2014-06-09 23:26:44

9

你試過用document.documentElement.scrollHeight代替嗎?

+0

這個。這一個工作:D – chadkouse 2016-02-02 03:00:42

相關問題