剛在寫document.body.scrollTop=0 實現返回頁面頂部時,發現火狐及IE下無效,但在chrome及Safari下有效,后來測試發現滾動頁面一定距離后:
1、在IE及Firefox中document.body.scrollTop的值恒為零,但是document.documentElement.scrollTop及window.pageYOffset(該參數返回文檔在垂直方向已滾動的像素值)的值為滾動的距離;
2、在chrome及Safari(webkit內核)下document.documentElement.scrollTop的值恒為零,但是document.body.scrollTop及window.pageYOffset的值為滾動的距離
一、IE11的情況
IE.png
二、Firefox 52.0.2的情況
Firefox.png
三、chrome 57.0.2987.133 的情況
chrome.png
四、Safari的情況
用的手機Safari瀏覽器測試的。。。沒錢買蘋果筆記本, 略...... 哈哈。。。(Safari內核也為webkit,同chrome一樣)
五、總結
因此構建返回頂部事件時,為了兼容,可以這樣寫:
goToTop.addEventListener("click", function () {
if (document.documentElement.scrollTop){
document.documentElement.scrollTop=0;
}
if (document.body.scrollTop){
document.body.scrollTop=0 ;
}
// $(window).scrollTop(0); 使用了jQuery 或zepto 等庫 可以這樣寫
})
或者更簡單的方法
goToTop.addEventListener("click", function () {
window.scrollTo(0,0); //前面一個0 表示要在窗口文檔顯示區左上角顯示的文檔的 x 坐標,后面0表示y坐標
})
值得注意的是 我們并沒有 因為window.pageYOffset在這三個瀏覽器中表現正常,就使用window.pageYOffset=0
這樣的語句,這是因為這樣只是簡單的賦值而已,其不會去操作滾動條。
**本文版權歸本人即簡書筆名:該賬戶已被查封 所有,如需轉載請注明出處。謝謝! *