2009-04-29 142 views
4

我使用jQuery 1.3.2。我無法在Internet Explorer中得到一個正確的「高度」jQuery的高度()問題與Internet Explorer 6

6.高度值是在所有其他的瀏覽器正確。

我也使用wresize jQuery plugin

每次瀏覽器加載,我火了重新調整即基於瀏覽器尺寸的div,I幀的方法。 (有這個一個很好的理由。)

的$(「身體」)返回的值。高度(),在IE 6中,似乎是瀏覽器的每個大小調整後增加10個像素。

其他人碰到類似的東西?

var iframeH = 0, h = 0, groupH = 0, adjust = 0; 

var tableH = $("#" + gridId + "_DXHeaderTable").parent().height(); 
var pagerH = $(".dxgvPagerBottomPanel").height(); 
var groupHeight = $(".dxgvGroupPanel").height(); 

if (pagerH == null) 
    pagerH = 0; 

if (groupHeight != null) 
    groupH = groupHeight + pagerH; 

iframeH = $('body').height(); 
h = (iframeH - (tableH + pagerH + groupH)); 

$('#' + gridId + "Panel").css("height", (h + "px")); 
$("#" + gridId + "_DXMainTable").parent().css("height", (h + "px")); 

此代碼用於設置DevExpress網格在其父容器中的高度。忽略代碼可能會更好的事實。 :)

難道還有比「身體」以外的東西,我可以用它來給我一個正確的大小?我試過窗口對象($(window).height()),但這似乎沒有多大幫助。

任何想法感謝!

+4

思想:消滅IE6。核武器。 – Seb 2009-04-29 17:47:53

+0

哈哈!如果只有我能。 – 2009-04-29 19:38:34

回答

5

你面臨的問題更可能是一個CSS渲染差異。由於浮動問題,填充和瀏覽器之間的邊距呈現差異。

試圖讓$( 「身體」)。innerHeight()$( 「身體」)。outerHeight(),並將它們在不同的瀏覽器比較,你會得到一些共同作用的結果。在最糟糕的情況下,您可能需要運行一些if

1

當然,這裏有幾個想法:

與IE和esp。舊的IE瀏覽器,我想補充我的周圍呈現高功能的1-10ms setTimeout的聲明 - 它給DOM和IE瀏覽器有機會「放鬆」

此外,還要確保你的東西是可見的網頁上 - 爲此,您可能需要使用絕對位置暫時將其從屏幕上移開,然後再次在屏幕上顯示它們。

另一件事是,高度()有時不整潔。嘗試使用.css('height')來檢索高度[它也更快],並刪除'px',有時是更真實的測量。

+0

感謝您的快速響應!嘗試一些你的想法。我會盡快給您回覆。 – 2009-04-29 19:42:24

-2
$('body').height(); // call this first 

iframeH = $('body').height(); //then try this