The standards-based way of getting the scroll is window.scrollY
. This is supported by Chrome, Firefox, Opera, Safari and IE Edge or later. If you only support these browsers, you should go with this property.
IE >= 9 supports a similar property window.pageYOffset
, which for the sake of compatibility returns the same as window.scrollY
in recent browsers, though it may perhaps be deprecated at some point.
The problem with using document.documentElement.scrollTop
or document.body.scrollTop
is that the scroll needn't be defined on either of these. Chrome and Safari define their scroll on the <body>
element whilst Firefox defines it on the <html>
element returned by document.documentElement
, for example. This is not standardized, and could potentially change in future versions of the browsers. However, if the scrollY
or pageYOffset
are not present, this is the only way to get the scroll.
TL;DR:
window.scrollY || window.pageYOffset || document.body.scrollTop + (document.documentElement && document.documentElement.scrollTop || 0)
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…