国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > JS > 正文

iscroll.js的上拉下拉刷新時無法回彈的解決方法

2024-05-06 16:28:36
字體:
來源:轉載
供稿:網友
本文給大家分享的是在IOS瀏覽器中使用iscroll.js的上拉下拉刷新時當手指劃出屏幕后無法回彈的解決方法,希望對大家能夠有所幫助。
 

使用過iscroll.js的上拉下拉刷新效果的朋友應該都碰到過這個問題:在iOS的瀏覽器中,上拉或下拉刷新時,當手指劃出屏幕后,頁面無法彈回。很多人因為解決不了這個問題,干脆就那樣不解決了,還有的直接就不用HTML了,使用原生代替HTML頁面。

相信很多朋友也有自己的解決辦法,只是沒寫出來,所以網上都搜不到解決方案。在很多QQ群里面也有很多人在問該怎么解決這個問題,所以我寫這篇文章記錄一下我的解決方案,希望對一些朋友有所幫助。

上拉下拉刷新的主要代碼:

 myScroll = new iScroll('wrapper', {  vScrollbar: false,  useTransition: true,  topOffset: pullDownOffset,  onRefresh: function () {   if (pullDownEl.className.match('loading')) {    pullDownEl.className = '';    pullDownEl.querySelector('.pullDownLabel').innerHTML = 'Pull down to refresh...';   } else if (pullUpEl.className.match('loading')) {    pullUpEl.className = '';    pullUpEl.querySelector('.pullUpLabel').innerHTML = 'Pull up to load more...';   }  },  onScrollMove: function () {   if (this.y > 5 && !pullDownEl.className.match('flip')) {    pullDownEl.className = 'flip';    pullDownEl.querySelector('.pullDownLabel').innerHTML = 'Release to refresh...';    this.minScrollY = 0;   } else if (this.y < 5 && pullDownEl.className.match('flip')) {    pullDownEl.className = '';    pullDownEl.querySelector('.pullDownLabel').innerHTML = 'Pull down to refresh...';    this.minScrollY = -pullDownOffset;   } else if (this.y < (this.maxScrollY - 5) && !pullUpEl.className.match('flip')) {    pullUpEl.className = 'flip';    pullUpEl.querySelector('.pullUpLabel').innerHTML = 'Release to refresh...';    this.maxScrollY = this.maxScrollY;   } else if (this.y > (this.maxScrollY + 5) && pullUpEl.className.match('flip')) {    pullUpEl.className = '';    pullUpEl.querySelector('.pullUpLabel').innerHTML = 'Pull up to load more...';    this.maxScrollY = pullUpOffset;   }  },  onScrollEnd: function () {   if (pullDownEl.className.match('flip')) {    pullDownEl.className = 'loading';    pullDownEl.querySelector('.pullDownLabel').innerHTML = 'Loading...';    pullDownAction();   } else if (pullUpEl.className.match('flip')) {    pullUpEl.className = 'loading';    pullUpEl.querySelector('.pullUpLabel').innerHTML = 'Loading...';    pullUpAction();   }  } });

頁面無法彈回的原因在于:手指劃出屏幕后touchend事件無法觸發,回彈動畫就無法執行。解決辦法就是:當手指接近屏幕邊緣的時候,手動觸發動畫方法。

在onScrollMove方法中插入判斷代碼:

  onScrollMove: function () {   if((this.y < this.maxScrollY) && (this.pointY < 1)){    this.scrollTo(0, this.maxScrollY, 400);    return;   } else if (this.y > 0 && (this.pointY > window.innerHeight - 1)) {    this.scrollTo(0, 0, 400);    return;   }   ......  }

下面解釋一下這段代碼的意思。

this.y是頁面已經滾動的垂直距離,this.maxScrollY是最大垂直滾動距離,this.pointY手指當前的垂直坐標。

當this.y < this.maxScrollY,就是已經處于上拉的過程,當(this.y < this.maxScrollY) && (this.pointY < 1)時,處于上拉且手指已經觸及屏幕邊緣,這時候手動觸發this.scrollTo(0, this.maxScrollY, 400),頁面就開始回彈。

下拉過程也可以同理分析。



注:相關教程知識閱讀請移步到JavaScript/Ajax教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 富蕴县| 双桥区| 察隅县| 马公市| 文山县| 金塔县| 上高县| 彭州市| 肥乡县| 高青县| 衡山县| 古蔺县| 连江县| 射洪县| 中牟县| 章丘市| 天台县| 乌拉特前旗| 突泉县| 增城市| 修文县| 新化县| 天台县| 兴仁县| 宁城县| 华坪县| 抚顺市| 中宁县| 龙口市| 汕头市| 汕尾市| 丹巴县| 南木林县| 宣武区| 抚远县| 民权县| 勐海县| 江北区| 肥西县| 泾阳县| 梅州市|