监控页面的滚动事件(上滚/下滚)

2017-05-05  本文已影响95人  秋秋秋web

注:以下方法是根据框架设计的,但也可以理解借鉴

公共接口

$(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 );  //内容区域的高度

    return Math.abs(scrollTop + clientHeight - scrollHeight) <=50;   //高度差在50内可以判断到底了

}

    //判断到顶部了

    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() {   //定义当前滚动的区域

    var scrollTop =me._param.config.scroller

        ?jQuery(me._param.config.scroller).scrollTop()    //自己设置的滚动区域

        : jQuery(document).scrollTop();    //浏览器的滚动区域

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

        scrolling =true;

    try{

        //找到当前页面的onScroll方法

        var scrollEvent =me.control().onScroll;    //当前页面的onScroll方法,me.control() 是当前页面

        if( scrollEvent ) scrollEvent(onFinish,true);    //这里的true和下面的false分别是用来表示滚到底部(true)还是顶部(false)了

        else onFinish();

       }catch(e) {

            onFinish();

         }

  }

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

    scrolling =true;

    try{

         //找到当前页面的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) {   //这里初次调用可以直接赋值参数,比如 onScroll ( null , true) 设置首次下滚

     //如果上滚则不能进行下面的一系列操作

     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) {

      // 数据返回后的操作

     finished && finished();

},true);

}

上一篇下一篇

猜你喜欢

热点阅读