移动端不触发touchend的解决方法以及后续影响问题的处理

在写一个下拉刷新上拉加载功能的时候使用了touch系列事件编写下拉刷新,正常的触发过程应该是:touchstart→touchmove→touchend,但是在安卓手机端,touchend是在下一次触摸的时候才会触发,百度了,原因是
主要是由于200ms超时导致内核不一定会一直处理touchmove事件,一旦超时会将后续所有的事件转交给UI处理,导致touchmove不会一直触发。
为了解决开发者需要,建议开发者在touchstart时调用event.preventDefault,这样就可以保证内核会一起触发touchmove事件了。

在touchstart中添加了event.preventDefault()方法的话,页面的点击事件和链接跳转都会失效,所以尝试在touchmove中添加event.preventDefault()方法,但是又遇到了页面无法滚动的问题,因为event.preventDefault()方法阻止了页面的滚动事件。解决这个问题就是在添加event.preventDefault()方法的时候加上判断条件,在特定条件(我这里是在页面顶端下拉的时候)下才阻止默认事件。

你可能感兴趣的:(移动端不触发touchend的解决方法以及后续影响问题的处理)