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

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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容