tap 点击穿透的问题

收藏
移动web开发项目
5
Feb 3, 2018

如果绑定tap方法的dom元素在tap方法触发后会被干掉(隐藏,移走,删掉),则它底下同一位置的dom元素会触发click事件、或者有浏览器认为可以被点击有交互反应的dom元素(例如input的focus事件),这个现象称为点击穿透.

 

回答

小泽回答

问题分析:

click事件在移动端会有延迟

zepto的tap事件是绑定在document.body上的,tap事件执行(冒泡之后)之前,click事件已经被"执行",只是被延迟了而已,所以在tap事件用preventDefault也不可行.

解决方案:

  1. 底下的元素也使用tap事件,即上下两个元素使用同一种事件(tap/click)
  2. 不要使用tap事件,使用touchend事件处理,并preventDefault掉
  3. 使用fastclick库,其实现原理就是把click的300ms延迟干掉

(0)

提交成功