美文网首页
监控页面的滚动事件(上滚/下滚)

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

作者: 秋秋秋web | 来源:发表于2017-05-05 17:30 被阅读95次

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

    公共接口

    $(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);

    }

    相关文章

      网友评论

          本文标题:监控页面的滚动事件(上滚/下滚)

          本文链接:https://www.haomeiwen.com/subject/kzrstxtx.html