touch事件会穿透页面,电脑上chrome模拟不会有,但手机上实际操作会出现


首先~:下面层是a标签(一定要慎用)的还是会穿透,但是div等这些便签的居然不会穿透了...

穿透(点穿)是在mobile各种浏览器上发生的常见的bug。可能是由click事件的延迟或者事件冒泡导致。

移动web开发常用的Zepto库中的touch和tap事件就会有点穿的bug(Zepto的事件都绑在Document上)。

常用的解决方案如下:

1 使用fastclick,这个可以非常完美的解决点穿问题。

2 在touchend事件回调中加入preventDefault, 并在下一层中加上pointer-events:none。


移动端的click都是touch之后,才会模拟触发。

触发的顺序是

touchstart

touchmove

touchend

mousedown

mousemove

mouseenter

click

在重叠的区域里,被遮盖的元素绑定click,遮盖的元素绑定touch事件,且touch后遮盖的元素会隐藏的话,就会造成穿透,因为click是在touch之后延迟触发的,浏览器会误认为是在遮盖的元素上触发了click。

最好的解决方案是 自己通过touchstart,touchmove,touchend,来模拟一个click(tap)事件,这样除了防止穿透外,事件响应速度也会提高。



你可能感兴趣的:(touch事件会穿透页面,电脑上chrome模拟不会有,但手机上实际操作会出现)