監(jiān)控頁面的滾動事件(上滾/下滾)

注:以下方法是根據(jù)框架設(shè)計的,但也可以理解借鑒

公共接口

$(function() { ? ?// js部分開始

? ? var scrolling =false; ? ??//判斷到底了

? ? functionisBottom() {

? ? ? ? var scrollTop =0;

? ? ? ? if ( document.documentElement ?&& document.documentElement.scrollTop ) {

? ? ? ? ?scrollTop = document.documentElement.scrollTop;

? ? }else if ( document.body ) {

? ? ? ? scrollTop =document.body.scrollTop;//滾動條高度

? ? }

? ? ?var clientHeight =document.documentElement.clientHeight; ?//瀏覽器高度

? ? var scrollHeight = Math.max( document.body.scrollHeight , document.documentElement.scrollHeight ); ?//內(nèi)容區(qū)域的高度

? ? return Math.abs(scrollTop + clientHeight - scrollHeight) <=50; ? //高度差在50內(nèi)可以判斷到底了

}

? ? //判斷到頂部了

? ? functionisTop(){

? ? ? ? var scrollTop =0;

? ? ? ? if ( document.documentElement && document.documentElement.scrollTop) {

? ? ? ? ? ? scrollTop =document.documentElement.scrollTop;

? ? ? ? }? else if ( document.body) {

? ? ? ? ? ? ? scrollTop =document.body.scrollTop;

? ? ? ? ?}

? ? ? ? ?return scrollTop==0;

? }

?functiononFinish() {

? ? ?scrolling =false;

? ?}

functiononScroll() { ??//定義當(dāng)前滾動的區(qū)域

? ? var scrollTop =me._param.config.scroller

? ? ? ? ?jQuery(me._param.config.scroller).scrollTop() ? ?//自己設(shè)置的滾動區(qū)域

? ? ? ? : jQuery(document).scrollTop(); ? ?//瀏覽器的滾動區(qū)域

? ? if(scrollTop >0&& !scrolling &&isBottom()) {

? ? ? ? scrolling =true;

? ? try{

? ? ? ? //找到當(dāng)前頁面的onScroll方法

? ? ? ? var scrollEvent =me.control().onScroll;? ? //當(dāng)前頁面的onScroll方法,me.control() 是當(dāng)前頁面

? ? ? ? if( scrollEvent ) scrollEvent(onFinish,true); ? ?//這里的true和下面的false分別是用來表示滾到底部(true)還是頂部(false)了

? ? ? ? else onFinish();

? ? ? ?}catch(e) {

? ? ? ? ? ? onFinish();

? ? ? ? ?}

? }

? ? if(scrollTop ==0&& !scrolling &&isTop()) {

? ? scrolling =true;

? ? try{

? ? ? ? ?//找到當(dāng)前頁面的onScroll方法

? ? ? ? ?var scrollEvent = me.control().onScroll;

? ? ? ? ?if( scrollEvent ) ?scrollEvent(onFinish,false);

? ? ? ? else onFinish();

? ? ?}catch(e) {

? ? ? ? ?onFinish();

? ? ? ? }

? ?}

}

window.addEventListener("scroll",onScroll,false);

});

某頁面的js部分

onScroll:function(finished,isBottom) { ? //這里初次調(diào)用可以直接賦值參數(shù),比如 onScroll ( null , true) 設(shè)置首次下滾

? ? ?//如果上滾則不能進(jìn)行下面的一系列操作

? ? ?if(!isBottom){ ?//這里對上滾刷新做了限制

? ? ? ? ?finished && finished();

? ? ? ? return;

? ? }

? ? if( that.$scope.count!=null&& that.$scope.userMsgList.length>= that.$scope.count) { ? //判斷

? ? ? ? ?finished && finished();

? ? ? ? return;

? ? }

? ?Util.ajax({ ? ?//ajax請求

? ? ? ?method:"POST",

? ? ? data:{?},

? ? ? url:Util.getApiUrl("")

? ? ? },function(data) {

? ? ? // 數(shù)據(jù)返回后的操作

? ? ?finished && finished();

},true);

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 以下是常用的代碼收集,學(xué)習(xí)用。轉(zhuǎn)自豪情博客園 1. PC - js 返回指定范圍的隨機數(shù)(m-n之間)的公式 re...
    自由加咖啡閱讀 1,102評論 0 1
  • Window和document對象的區(qū)別 window對象window對象表示瀏覽器中打開的窗口window對象是...
    FConfidence閱讀 2,364評論 0 5
  • 1.第一種方式:錨鏈接 優(yōu)點:簡單快速,沒有兼容性問題 缺點: 視覺上不夠直觀,用戶體驗不太好 2.js的方式: ...
    love2013閱讀 852評論 0 0
  • offset家族三大家族和一個事件對象三大家族(offset/scroll/client)事件對象/event ...
    Yuann閱讀 1,085評論 0 5
  • 6:00起床寫分享 一直寫到上午10:30 上午感召海星非常感謝王劍從昨天晚上一直開導(dǎo)我到今天上午11:00,從昨...
    書恒被從名了閱讀 378評論 0 0

友情鏈接更多精彩內(nèi)容