在寫一個(gè)下拉刷新上拉加載功能的時(shí)候使用了touch系列事件編寫下拉刷新萍膛,正常的觸發(fā)過程應(yīng)該是:touchstart→touchmove→touchend舞虱,但是在安卓手機(jī)端诞外,touchend是在下一次觸摸的時(shí)候才會(huì)觸發(fā)料睛,百度了,原因是
主要是由于200ms超時(shí)導(dǎo)致內(nèi)核不一定會(huì)一直處理touchmove事件撬槽,一旦超時(shí)會(huì)將后續(xù)所有的事件轉(zhuǎn)交給UI處理此改,導(dǎo)致touchmove不會(huì)一直觸發(fā)。
為了解決開發(fā)者需要侄柔,建議開發(fā)者在touchstart時(shí)調(diào)用event.preventDefault共啃,這樣就可以保證內(nèi)核會(huì)一起觸發(fā)touchmove事件了。
在touchstart中添加了event.preventDefault()方法的話勋拟,頁面的點(diǎn)擊事件和鏈接跳轉(zhuǎn)都會(huì)失效勋磕,所以嘗試在touchmove中添加event.preventDefault()方法妈候,但是又遇到了頁面無法滾動(dòng)的問題敢靡,因?yàn)閑vent.preventDefault()方法阻止了頁面的滾動(dòng)事件。解決這個(gè)問題就是在添加event.preventDefault()方法的時(shí)候加上判斷條件苦银,在特定條件(我這里是在頁面頂端下拉的時(shí)候)下才阻止默認(rèn)事件啸胧。