vux组件中Scroller ios13上出现的问题 滑动的时候总是会莫名其妙的弹回顶部

最近在项目上遇到了一个很恶心的问题,就是项目在ios 13的苹果手机上,滑动的时候总是会莫名其妙的弹回顶部。

因为是维护之前的项目,这个项目之前也不是我写的,也不清楚当时那位老哥是为何非要使用已经停止维护的vuxScroller

刚开始面对这个问题我也是很茫然,因为在开发的时候用浏览器测试时是完全没有这个问题,加上我手机之前也没有升级到ios 13,所以也是没有发现到这个问题。发现了以后,我去排查代码,感觉也没什么问题呀。好像也没有类似让他滚回顶部的逻辑代码呀。于是我就百度一下,看了一些,好像这个vux坑还蛮多的,但是似乎没有找到于我类似的文章。于是,我就只能与google了。幸运的是我终于找到了遇到跟我一样的孩纸。

简单的说一下原因:

大概就是因为ios13上面获取transform的结果跟老版本的结果不一样

// 老版本:
'matrix(1, -2.4492935982947064, 2.4492935982947064, 1, 0, 19.48200035095215)'
 
//新版本
'matrix(1, -2.4492935982947064e-16, 2.4492935982947064e-16, 1, 0, 19.48200035095215)'
解决方法:

\node_modules\vux-xscroll\build\cmd\simulate-scroll.js下的getScrollTop方法里面的正则表达式替换成下面(/[-\d.\de-\d]+/g )的就可以了。

这里路径可能不完全一样,反正就是源码库里的vux-xscroll里的simulate-scroll.js这个文件

getScrollTop: function() {
    // var transY = window.getComputedStyle(this.container)[transform].match(/[-\d\.*\d*]+/g);
    var transY = window.getComputedStyle(this.container)[transform].match(/[-\d\.*\d*e\-\d]+/g);
    return transY ? Math.round(transY[5]) === 0 ? 0 : -Math.round(transY[5]) : 0;
  }

其实这个里面的更深层的意思是什么我也不懂,就是想记录一下自己的经历,然后也希望以后要是还有小朋友遇到这个问题,可以更快的解决这个问题。

原文的地址:(https://blog.csdn.net/sllailcp/article/details/102502452)

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值