2012-09-25 70 views
1

我實施無限滾動,這意味着我追加的內容到DOM塊之後加入(通過jQuery和JavaScript)。IE報告不正確.height()上的內容頁面加載

爲了使這個手感滑爽對於用戶來說,我們需要做一些手工滾動,以保持「在同一個地方」的內容的窗口,特別是當我們在前面加上什麼用戶正在觀看的前文本。爲了完成這個任務(預先設置一個塊,然後將內容向下滾動到我們預先確定的數量),我們需要能夠確定我們剛剛添加的內容的高度。這是Firefox和IE不同的地方。 Firefox正確處理這個問題,並滾動到我內容中的正確位置,但IE的真實值約爲2400px時,報告的高度爲600px。

var h1 = $(document).height(); //take the height before appending 
$('#textChunks').prepend(newContent); // prepend stuff on top 
var h2 = $(document).height();//take the height again... 
alert(h2-h1); 

的警告值是在IE瀏覽器一直錯(關閉的3倍),這是一貫的,無論我如何進行測量(我可以代替測量「newContent」的高度,它在後DOM和IE仍然報錯,但始終如此)。甚至其他'內置'JavaScript函數(如.scrollIntoView())在IE中似乎也只有這個量。

作爲一個全面的檢查,我可以創造我的桌面我的內容的樣品上一個獨立的HTML文件,在這種情況下它的工作原理。所以這個問題似乎只是在頁面加載後添加內容。

+0

爲什麼它的價值,聽起來像你有一個css問題,盒模塊更短。另一個問題可能是缺少結束標記,或者沒有代碼,所以有50個地方可以猜測。我會被打傷,爲什麼有這樣的價值差異,可能是因爲你的CSS沒有正確說明borwsers中的盒子模塊不會自動糾正你。只是一個想法。 –

+1

問題:您的頁面處於嚴格模式還是怪癖模式?你使用的是什麼'doctype',並且是你的HTML頂部的第一件事? IE瀏覽器往往做怪異的事情,在怪異模式,最好被遺忘...... –

+0

謝謝先生!這確實是正確的方向!更多詳情如下 –

回答

1

答案是怪癖模式!

有很大的參考:http://webdesign.about.com/cs/doctype/a/aaquirksmode.htm

爲快速測試,我改變了我的本地設置(F12在IE瀏覽器,然後更改「文件模式」從怪癖IE9標準),其中固定我的滾動發行!

沒有DOCTYPE聲明,IE被默認爲怪癖模式,這顯然使得它添加到頁面加載後的DOM,這自然使得滾動不可靠的元素報告不正確的高度。另請注意,我在框架內的框架內工作,因此爲我的內容指定DOCTYPE的最佳位置是在OUTERMOST FRAME中。

+1

你會想在頂層和iframe中指定'doctype',你會希望它們是相同的。在某些瀏覽器中,iframe從其他瀏覽器中的最外框繼承本地類型類型規則。 –

0

使用HTMLElement.offsetHeight得到任何HTML元素的「真實」的高度。

+0

謝謝,但我嘗試了幾種方法來訪問這個值,它們都是一致的和一致的錯誤(僅在IE中),而在Firefox中它們是正確的。當我將這些div添加到DOM中時,IE會將我的div的大小報告爲其真實值的一小部分。 –