【 H5踩坑 】Dom变更引起的 touchend 不触发
背景故事
几个月前小编接了一个 全屏阻止touch默认行为,并模拟滚动 的需求。
但事成之后,偶尔出现 “突然锁死” 的问题,无法进行任何滑动。
问题原因
几经排查,是我们设计的 “单指锁定” 模块引起的。
- 为了更好的体验,我们做了一个“单指锁定”模块,当上一个手指不放开时,另一个手指不论怎么滑也不会引起交互。
- 因此如果 由于某种情况 导致 touchend 丢失,就无法解除当前手指的锁定状态,导致锁死。
某种情况是什么情况?
原因1 · iOS 底部控制中心划出引起的浏览器JS阻塞
图1 万恶的控制中心,弹出时会阻塞JS
原来如此
通过 window上的 touchcancel 事件来监听这一状况
window.addEventListener('touchcancel',e=>{
// ... 重设触摸状态
});
然后重设触摸状态,简

