300ms延迟问题
在移动端中点击事件会存在300ms延迟,造成这个事件的原因是:
- 移动端存在双击放大缩小的情况,设备无法确定用户是单击还是双击,需要等待300ms来界定用户行为。
解决方式:
- 通过meta标签来禁止网页缩放,置usr-scalabel=no
-
touch事件和穿透问题
事件
touchstart : 触摸
- touchmove : 手指滑动
- touchend : 手指离开屏幕 (点击离开,滑动离开都会触发)
touch事件穿透问题:
下面这段代码当点击a标签区域的时候,本质上只是点击了处于上层的mask,但是因为touch事件存在穿透问题,会跳转到a标签的链接当中。
<style>.mask {position: absolute;width: 100vw;height: 100vh;background-color: rgba(0, 0, 0, 0.3);}</style></head><body><div class="mask"></div><a href="https://www.baidu.com">baidu</a><script>const mask = document.querySelector('.mask');mask.addEventListener('touchstart', () => {console.log('start');mask.style.display = 'none';});</script></body>
解决方式
- fastclick
- 阻止默认行为
