美文网首页
移动端延迟300ms

移动端延迟300ms

作者: 一包 | 来源:发表于2019-04-03 17:10 被阅读0次

(还有很多笔记等春招后慢慢再整理吧

使用tap解决

  • 一次tap事件包含touchstart和touchmove(轻微移动)以及touchend三种状态
  • callback方法在touchend后执行
    根据chrome浏览器默认的判断取消点击的移动量,手指偏移量(水平或垂直)超过15px则判定为滚动,取消执行tap事件
  • 手指按下时间过长不视为点击,默认时间间隔为500ms
    -使用HTMLElement来扩充原型,方便添加Event
  • 使用单例模式,确保只加载一次

fastclick

  • 在检测到touchend事件的时候,会通过DOM自定义事件立即出发模拟一个click事件,并把浏览器在300ms之后真正的click事件阻止掉

点击穿透

  • 点击穿透现象有3种:点击穿透问题:点击蒙层(mask)上的关闭按钮,蒙层消失后发现触发了按钮下面元素的click事件蒙层的关闭按钮绑定的是touch事件,而按钮下面元素绑定的是click事件,touch事件触发之后,蒙层消失了,300ms后这个点的click事件fire,event的target自然就是按钮下面的元素,因为按钮跟蒙层一起消失了跨页面点击穿透问题:如果按钮下面恰好是一个有href属性的a标签,那么页面就会发生跳转因为a标签跳转默认是click事件触发,所以原理和上面的完全相同
解决
  • 不要混用touch和click既然touch之后300ms会触发click,只用touch或者只用click就自然不会存在问题了
  • 吃掉(或者说是消费掉)touch之后的click依旧用tap,只是在可能发生点击穿透的情形做额外的处理,拿个东西来挡住、或者tap后延迟350毫秒再隐藏mask、pointer-events、在下面元素的事件处理器里做检测(配合全局flag)等等,能吃掉就行

相关文章

  • 移动端的一些问题

    移动端延迟300ms

  • vue资源

    1、移动端 1.1、fastclick(消除移动端300ms延迟)fastclick 消除移动端300ms的点击延...

  • 请详解移动端点透,为什么会发生点透?描述发生的场景及解决方案

    提到移动端点透问题,就不得不先提到移动端的click事件300ms延迟问题 一、移动端click事件300ms延迟...

  • 移动端兼容性问题解决方案

    1. IOS移动端click事件300ms的延迟响应 移动设备上的web网页是有300ms延迟的,玩玩会造成按钮点...

  • 前端面试题汇总

    1.移动端300ms延迟由来及解决方案(1) 300ms延迟由来300 毫秒延迟的主要原因是解决双击缩放(doub...

  • 移动端页面的特点

    300ms延迟 (落后的) 三百毫秒的来龙去脉 移动端300ms点击延迟和点击穿透问题 禁用缩放 如果设置了wi...

  • fastclick用法

    移动端点击延迟事件 移动端浏览器在派发点击事件的时候,通常会出现300ms左右的延迟。原因: 移动端的双击会缩放导...

  • 移动端页面点击穿透问题

    一、click与300ms延迟 移动端浏览器提供了一个特殊的功能:双击放大 300ms的延迟就是来自于这里,用...

  • fastclick的介绍和使用

    移动端点击延迟事件 1.移动端浏览器在派发点击事件的时候,通常会出现300ms左右的延迟 2.原因: 移动端的双击...

  • 移动端

    原生事件 因为click有300ms的延迟(用于判断是否长按),所以不建议在移动端使用click。移动端事件,主要...

网友评论

      本文标题:移动端延迟300ms

      本文链接:https://www.haomeiwen.com/subject/vbwzbqtx.html