最近在做微信項目的時候遇到一個奇怪的問題:
常購清單的商品多了以后往上滑沒有任何反應,不能滑動。但商城首頁又可以往上滑。而且ios沒有這個問題,安卓才有這個問題。
起初我以為是因為這2個頁面調用接口循環加載出商品的方法不同導致的。商城首頁的商品部分是用laytpl模板寫的;常購清單商品部分是拼的字符串。
結果就是不管是模板寫的還是拼的字符串,安卓都不能往上滑動,ios可以。
我以為是ios和安卓的兼容性問題,后來發現是在css文件里加了touch-action:none; 這句代碼,只要把這句代碼去掉就可以了。
解決方法:去掉這句代碼——touch-action:none; (這句代碼的意思是:禁止觸發默認的手勢操作)
至於為什么要加這句代碼,是因為使用滾動時候,新版google瀏覽器,會彈出如下的警告。
解決辦法就是加上這句代碼: touch-action: none; 然后就測試了下,可以解決這個問題。后來忘記刪除了,更沒想到之后會出現上述問題,被自己坑了一次,哈哈
這個錯相當於是一個警告,沒有什么影響。當時出於好奇,想知道這個警告是什么,怎樣把這個警告去掉,后來沒想到加了touch-action:none;這句代碼會造成上述問題
補充:
因為看到有小伙伴評論說是因為我監聽的元素有passive: true屬性,調用preventDefault()失敗
然后專門去查了Passive Event Listeners屬性(這個新特性是為解決滾動和觸摸事件的卡頓而發明的)
詳情:https://juejin.im/post/5ad804c1f265da504547fe68