前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >android 4.4 zepto.tap 偶尔需点击两次 bug 分析

android 4.4 zepto.tap 偶尔需点击两次 bug 分析

原创
作者头像
腾讯IVWEB团队
修改2017-06-30 18:05:02
1.1K0
修改2017-06-30 18:05:02
举报

作者:feix760

怎么复现这个问题

[img594ca64aa3fe7.png]
[img594ca64aa3fe7.png]

1、首先随意的滑两次,每次滑长一些,不用滑重(碎屏就不好了~~)

2、再点击一次,之后立刻停住~

Oh, no 你肯定在我说停住之后再点了一下,你觉得你并没有点到~

反复试几次仔细发现,原来是要点两次!

为什么会这样

zepto 发出you tap me的嚎叫可以用下面代码归纳

代码语言:javascript
复制
$(document)                                                                      
    .on('touchstart', function() {                                               
        // 打酱油                                                                
    })                                                                           
    .on('touchmove', function() {                                                
        deltaX += XXX;                                                           
        deltaY += XXX;                                                           
    })                                                                           
    .on('touchend', function() {                                                 
        if (deltaX < 30 && deltaY < 30) {                                                                                                                
            // you tap me                                                           
            touch.el && touch.el.trigger(event)                                     
        }                                                                           
        deltaX = deltaY = 0;                                                                                                                              
    })                                                                           
    .on('touchcancel', function() {                                                 
        // 打酱油                                                                   
    });

Android 4.4 touch事件

长距离的滑动: touchstart - > touchmove(仅一次) -> touchcancel

短距离: touchstart - > touchmove(一次) -> touchend

事情发展到了这里,去下载最新的zepto发现也只在touchend里做了这件重要的事情

代码语言:javascript
复制
deltaX = deltaY = 0;   

哎~

看破红尘,上面的都不重要

Android 4.4 长距离的滑动touchmove只发生一次是不是让充满爱的FE瞬间变得忧伤了~

哈~,其实只需touchmove时e.preventDefault()

touchstart - > touchmove(仅一次) -> touchcancel

就能变成

touchstart - > touchmove(多次) -> touchend

(也不再是touchcancel了)

原文链接:http://ivweb.io/topic/55c5d4c8c222e3af6ce235aa

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 怎么复现这个问题
  • 为什么会这样
    • zepto 发出you tap me的嚎叫可以用下面代码归纳
      • Android 4.4 touch事件
      • 看破红尘,上面的都不重要
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
      http://www.vxiaotou.com