移动端android,长按事件时,touchend事件不触发的解决方法
下面记录一个在工作中,遇到的touchend事件不触发的bug解决方法:
就是当长按特定按钮的时候,会启动一个事件,往杯子里面装水,当松开后,会有相关的操作,但是发现在部分安卓手机里面,长按松手后,touchend事件触发不了。一开始在网上找了好多回复,都说在touchstart事件里面加上e.preventDef***lt()就可以啦,但是经过亲身试验后,发现此方法对长按事件无效!
后来只能查看了一下touch其他的事件,发现还有 touchcancel 这么一个东西!
这个事件是在,当触控点被特定的实现方式打乱时触发 的,于是就怀着死马当活马医的心情,在页面添加了touchcancel事件,里面执行的逻辑和touchend事件里面的逻辑是一模一样的,结果还真是不让人失望,完美解决!
touchstart高亮touchend恢复
touchstart高亮touchend恢复具体说名如下。
1、ouchstart事件:当手指触摸屏幕时候触发,即使已经有一个手指放在屏幕上也会触发。
2、touchmove事件:当手指在屏幕上滑动的时候连续地触发。
移动端不触发touchend的解决方法以及后续影响问题的处理
在写一个下拉刷新上拉加载功能的时候使用了touch系列事件编写下拉刷新,正常的触发过程应该是:touchstart→touchmove→touchend,但是在安卓手机端,touchend是在下一次触摸的时候才会触发,百度了,原因是
主要是由于200ms超时导致内核不一定会一直处理touchmove事件,一旦超时会将后续所有的事件转交给UI处理,导致touchmove不会一直触发。
为了解决开发者需要,建议开发者在touchstart时调用event.preventDef***lt,这样就可以保证内核会一起触发touchmove事件了。
在touchstart中添加了event.preventDef***lt()方法的话,页面的点击事件和链接跳转都会失效,所以尝试在touchmove中添加event.preventDef***lt()方法,但是又遇到了页面无法滚动的问题,因为event.preventDef***lt()方法阻止了页面的滚动事件。解决这个问题就是在添加event.preventDef***lt()方法的时候加上判断条件,在特定条件(我这里是在页面顶端下拉的时候)下才阻止默认事件。
touchend的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于头沉的抬不起来怎么回事、touchend的信息别忘了在本站进行查找喔。