2013-10-27 69 views
22

當試圖找出多少網頁已經從頂部滾動,其中這些應該使用一個:body.scrollTop VS documentElement.scrollTop VS window.pagYOffset VS window.scrollY

document.body.scrollTop

document.documentElement.scrollTop

window.pagYOffset

window.scrollY

哪一個(或多個)我會在這2個獨立的場景中進行選擇:

a)如果我想最大的兼容性(跨越當前使用的主流瀏覽器)

B)如果我想要的代碼,這是最標準的投訴/面向未來/嚴格模式兼容(但不關心支持舊/非標準瀏覽器)?

回答

20

我在skrollr源

return window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0; 

https://github.com/Prinzhorn/skrollr/blob/b98d40820b9864be275e81af382045d72cc5a08a/src/skrollr.js#L627

一)到目前爲止,它的工作在所有瀏覽器(沒有人投訴在過去的一年),使用三個。 b)由於它會使用第一個被定義的,所以我認爲它很有前途和穩定性。

如果你是看上你能做到這一點,以及

Math.max(window.pageYOffset, document.documentElement.scrollTop, document.body.scrollTop) 
+0

這是https://github.com/Prinzhorn/skrollr/blob/master/src/skrollr.js#L627現在:D – Amio

+0

@Amio謝謝,我更新了鏈接到一個特定的提交,所以它不會再改變 – Prinzhorn

+3

更好地使用'document.documentElement.scrollTop' – McX

1

鑑於skrollr不使用window.scrollY,這可能是顯而易見的,但隨着進一步的答案,原來的問題:window.pageYOffset是一個別名window.scrollY。請參閱Window.scrollY

2

Prinzhorn的answear:

由於bodydocumentElement是在Chrome/Firefox中undefined,更好地利用:

return window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0; 

測試自己。

+2

FF中的document.body.scrollTop不起作用,document.documentElement.scrollTop行爲很奇怪:值有時很奇怪。 –

相關問題