轉載:https://blog.csdn.net/sllailcp/article/details/102502452
今天客戶反饋的問題,說在最新版的iOS上(iOS13),滑動列表,滑完就會跳到頂部,然后去查了下vux的文檔,沒有解決辦法,百度了一大堆,也沒有相關問題,只能看下源碼到底是哪除了問題。
經過一層層的查找,終於發現是ios13上面獲取transform的結果跟老版本的結果不一樣
// 老版本: 'matrix(1, -2.4492935982947064, 2.4492935982947064, 1, 0, 19.48200035095215)' //新版本 'matrix(1, -2.4492935982947064e-16, 2.4492935982947064e-16, 1, 0, 19.48200035095215)'
而vux-xscroll的正則是這么寫的
window.getComputedStyle(this.container)[transform].match(/[-\d\.*\d*]+/g)
陪配最新版本的ios會出現["1", "-2.4492935982947064", "-16", "2.4492935982947064", "-16", "1", "0", "19.48200035095215"]
然后就導致程序錯亂。
校驗的代碼具體目錄是在 \node_modules\_vux-xscroll@3.1.12@vux-xscroll\build\cmd\simulate-scroll.js下的getScrollTop方法
解決辦法:將\node_modules\_vux-xscroll@3.1.12@vux-xscroll\build\cmd\simulate-scroll.js下的getScrollTop方法里面的正則表達式替換成下面的就可以了。
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; },
如果有什么好的解決方法,可以告訴博主哦。