2013-03-15 74 views
0

我有一個包含在我的ASP.NET Web應用程序的頁面上的iframe中的控件。 控件相應地根據用戶選擇的尺寸改變其垂直尺寸(一些元素進入,其他元素跳出)。所以,我必須精確地設置iframe的大小以顯示整個控件,並且不要在iframe和它下面的元素之間留下空隙。真正跨瀏覽器的方式獲取文檔高度?

網路上的我已經找到一種方式來獲得一個跨瀏覽器的方式原稿的高度:

 function getDocHeight(document) { 
     return Math.max(
      Math.max(document.body.scrollHeight, document.documentElement.scrollHeight), 
      Math.max(document.body.offsetHeight, document.documentElement.offsetHeight), 
      Math.max(document.body.clientHeight, document.documentElement.clientHeight) 
     ); 
    } 

在控制頁面上self.document.body.onload,因此,我把這個功能:

 function adjustIframeHeight() { 
     var iframe = window.parent.document.getElementById(window.frameElement.id); 
     var iframeHeight = getDocHeight(iframe.contentWindow.document); 
     iframe.style.height = iframeHeight + "px"; 
    } 

問題是它工作正常在Firefox中,但在某些情況下,控件的底部部分在Chrome和IE中被截斷。

有沒有一些真正的跨瀏覽器的方式來獲得這個高度,或者我做了其他錯誤? 謝謝你的時間

回答

0

我會使用類似jQuery來助陣本(因爲使用高度方法似乎從瀏覽器到瀏覽器有所不同),這裏是一些jQuery的代碼,可以幫幫忙:

$(document).height(); // height of HTML doc 
+0

其實它給了我與jQuery相同的結果。我開始弄清楚什麼是問題:只有當圖像處於最底層時,我纔會將它們截斷。我看起來幀高是在圖像加載之前計算的。當我做頁面刷新時,框架會得到適當的高度。你有一些想法如何告訴圖像加載之前。我正在使用ASP.NET ImageButton-s,並且正在設置它們的ImageUrl屬性 – 2013-03-15 11:12:39