在手機上,數據列表的分頁都是下拉到底部的時候會加載更多,可是,去年三月份的時候遇到了客戶要求web頁面也要下拉加載更多的需求,因而按照web頁面在滾動條下拉時加載更多內容(我的項目經驗)文中的代碼實現了這個下拉加載,很簡單的,代碼以下:html
var totalPages;//總頁數 var pageno = 0;//當前頁數 $(function(){ $(window).scroll(function() { var scrollTop = $(this).scrollTop(),scrollHeight = $(document).height(),windowHeight = $(this).height(); var positionValue = (scrollTop + windowHeight) - scrollHeight; if (positionValue == 0) { //do something if (pageno < totalPages - 1) { pageno++; doSomething(pageno); } else { alert('沒有更多了'); } } }); ); function doSomething(pageno) { var url = "*******";//分頁列表的接口 var data = { size: 5, start: pageno, }; $.getJSON(url, data, function (rtn) { }); }
可是,今天測試人員發現,當瀏覽器縮放了或者屏幕顯示設置縮放時,就不能下拉加載了。時隔一年多,真是驚人@_@web
通過調試,發現是有縮放時positionValue
的值就沒法等於0了,無法繼續加載更多了,這時看到一篇文章下拉加載更多DEMO(js實現)中講到:segmentfault
若是等滾動條拉到底部時再加載,會影響用戶體驗。由於通常動態加載的時候都須要向服務端請求資源,這時須要時間。一個更佳的方式是,當滾動條距離底部必定距離(C)時,就動態加載更多,向服務端請求資源。也就是預加載,預讀取。公式以下
this.scrollHeight - C == $(this).scrollTop() + $(this).height()
看完後收到啓發,因而將positionValue的值設爲大於等於-10,這裏的10也就是滾動條距離底部必定距離(C)的值。
果真,沒問題了,有縮放時也能夠正常實現下拉加載。瀏覽器
因而,記錄下來,分享給你們,共勉。測試
另外提醒一點,$(window).scroll(function()監聽滾動事件不執行這個問題中的採納答案提到:this
html,body的高度樣式若是設置爲100%,$(window).scroll
方法將檢測不到正確的滾出高度(0),致使滾動監聽事件失效,設置html,body{ height:auto }
能夠解決。
var totalPages;//總頁數 var pageno = 0;//當前頁數 var C = 10;//滾動條距離底部的距離 $(function(){ $(window).scroll(function() { var scrollTop = $(this).scrollTop(),scrollHeight = $(document).height(),windowHeight = $(this).height(); var positionValue = (scrollTop + windowHeight) - scrollHeight; if (positionValue >= -C) { //do something if (pageno < totalPages - 1) { pageno++; doSomething(pageno); } else { alert('沒有更多了'); } } }); ); function doSomething(pageno) { var url = "*******";//分頁列表的接口 var data = { size: 5, start: pageno, }; $.getJSON(url, data, function (rtn) { }); }
web頁面在滾動條下拉時加載更多內容(我的項目經驗)
下拉加載更多DEMO(js實現)
$(window).scroll(function()監聽滾動事件不執行url