三種方法任選其一:
var sTop = document.body.scrollTop+document.documentElement.scrollTop; var sTop = document.documentElement.scrollTop || document.body.scrollTop; var sTop = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop;
造成的原因:
document.body.scrollTop在xhtml標准網頁或者更簡單的說是帶<!DOCTYPE ..>標簽的頁面里得到的結果是0,如果不要此標簽則一切正常。
使用document.documentElement來取代document.body,:在javascript里||是個好東西,除了能用在if等條件判斷里,還能用在變量賦值上。
chrome不認識document.documentElement.scrollTop!如果有文檔聲明(即網頁第一句的docType)的情況下,標准瀏覽器是只認識documentElement.scrollTop的,但chrome雖然我感覺比firefox還標准,但卻不認識這個,在有文檔聲明時,chrome也只認識document.body.scrollTop.
由於在不同情況下,document.body.scrollTop與document.documentElement.scrollTop都有可能取不到值。
相反,如果不做聲明的話,document.documentElement.scrollTop反而會顯示為0。
因為document.body.scrollTop與document.documentElement.scrollTop兩者有個特點,就是同時只會有一個值生效。比如document.body.scrollTop能取到值的時候,document.documentElement.scrollTop就會始終為0;反之亦然。
這兩個值總會有一個恆為0,所以不用擔心會對真正的scrollTop造成影響。