js上拉加载

    xiaoxiao2022-07-05  221

    function loadNextPage(obj){ this.el = obj.el; this.distance = this.distance ? this.distance : 0; this.downFN = obj.downFN; this.time = null; this.flag = true; this.init(); } loadNextPage.prototype = { constructor:loadNextPage, init:function(){ this.onScroll() }, getScrollTop: function() { var scrollTop = 0; if(document.documentElement && document.documentElement.scrollTop) { scrollTop = document.documentElement.scrollTop; } else if(document.body) { scrollTop = document.body.scrollTop; } return scrollTop; }, getClientHeight:function() { var clientHeight = 0; if(document.body.clientHeight && document.documentElement.clientHeight) { clientHeight = Math.min(document.body.clientHeight, window.innerHeight); } else { clientHeight = Math.max(document.body.clientHeight, window.innerHeight); } return clientHeight; }, onScroll:function(){ var _this = this; window.onscroll = function() { var elTop = document.querySelector(_this.el).getBoundingClientRect().top; var elH = document.querySelector(_this.el).getBoundingClientRect().height; if(_this.getScrollTop()-(_this.getScrollTop()+elTop + elH - _this.getClientHeight()) >= -1) { clearTimeout(_this.time); _this.time=setTimeout(function(){ if(!_this.flag){ return false; } _this.flag = false; _this.downFN() },300) } } } } var loadNextPage = new loadNextPage({ el:".profit_list", distance:10, downFN:function(){ //滑动到目标元素后触发的回调函数 //需要设置loadNextPage.flag = true才能再次回调 } })

     

    最新回复(0)