通常我们常用的手势事件有 touchstart, touchmove, touchend
,对 touchcancel
用之甚少,仅知道就是由于系统原因导致的手势中断而触发的事件。
在一个项目中我就用到了这个事件 touchcancel
,有这么个需求:需要监听长按下载这个动作(浏览器默认支持长按下载,同时会弹出一个系统弹框)
很自然我们就想到了监听 touchstart/touchend
,在 touchstart
记录起始点/时间,在 touchend
记录终止点/时间,满足长按要求则触发事件;
在实际测试过程中,有些浏览器并不触发 touchend
事件,这时候想到了 touchcancel
,猜测应该是这些浏览器弹出下载浮层属于系统中断 touch
事件,经测试猜想是正确的。
结论:某些浏览器下(UC/QQ...
)系统弹层会阻止当前 touch
事件的发生,需要同时监听 touchend/touchcancel
,代码如下:
End.