2012-09-12 28 views
1

我在我的JavaScript中有一個問題,它只是根據內容調整iFrame的大小。我有它在其他地方工作,但對於這個例子它是拋出一個錯誤。使用以下代碼body爲空,因此無法獲得scrollHeightcontentWindow.document.body爲null

if(document.getElementById('iFrameHelpDesk') != null) 
{ 
    var Height = document.getElementById('iFrameHelpDesk').contentWindow.document.body.scrollHeight; 

    document.getElementById('iFrameHelpDesk').height = Height + 40; 
} 

使用的HTML是:

<iframe src="http://<snipped webaddress>" id="iFrameHelpDesk" scrolling="no" frameborder="no"></iframe> 

爲什麼這個不填充body對象?

+1

如果iframe具有與主頁面不同的域,則出於安全原因您無法訪問它。 – grc

+0

@grc - 該頁面位於同一個域中,因此不存在此問題。 – anothershrubery

+0

除了上面的我的觀點,上面的代碼也適用於我指定的所有其他iframe。這只是導致問題的原因之一。 – anothershrubery

回答

2

相當簡單,我從文檔加載($(function() {}))方法中取出代碼,並將其放入它自己的方法中,以便實際加載iframe。 IE瀏覽器。

$('#iFrameHelpDesk').load(function() { 

    var Height = document.getElementById('iFrameHelpDesk').contentWindow.document.body.scrollHeight; 

    document.getElementById(iFrameHelpDesk').height = Height + 40; 

}); 

這是完美的,因爲它應該。但是現在讓我困惑的是,爲什麼其他一些iframe,我執行類似的代碼,在文檔加載中工作正常。但是,這工作,我很高興與此。