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

作者:feix760

怎么复现这个问题

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

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

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

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

为什么会这样

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

$(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里做了这件重要的事情

deltaX = deltaY = 0;   

哎~

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

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

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

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

就能变成

touchstart - > touchmove(多次) -> touchend

(也不再是touchcancel了)

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

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

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

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏嵌入式程序猿

关于PWM那些事(3)

经过前两次的学习,是不是对PWM的基础知识有一些了解呢,今天我们来介绍下PWM时钟和死区时间,依然以飞思卡尔KV4x系列MCU为例 PWM时钟框图 PWM模块的...

3388
来自专栏大数据挖掘DT机器学习

Python爬虫股票评论,snowNLP简单分析股民用户情绪

一、背景 股民是网络用户的一大群体,他们的网络情绪在一定程度上反映了该股票的情况,也反映了股市市场的波动情况。作为一只时间充裕的研究僧,我课余时间准备...

4118
来自专栏智能大石头

借助Redis做秒杀和限流的思考

最近群里聊起秒杀和限流,我自己没有做过类似应用,但是工作中遇到过更大的数据和并发。 于是提出了一个简单的模型: var count = rds.inc(key)...

8824
来自专栏小樱的经验随笔

Codeforces Round #423 (Div. 2, rated, based on VK Cup Finals)爆零记

昨晚一个瓜皮说今晚有cf,听说是晚间场,我瞅了一眼,娃,VK Cup,上分的好机会,看着比赛时间就有点心酸了,0:35,当时一直在纠结要不要打的问题,当时想着应...

2464
来自专栏福利活动清单

腾讯云年末特惠

而且都是超低价了,就拿第一个4核16G的来说,官网原价是8040/年,5年就是4万多,一口价直接就便宜了3万元,简直美滋滋!

1706
来自专栏圆方圆学院精选

【董天一】IPFS: BitSwap协议(数据块交换)

IPFS在BitTorrent的基础上实现了p2p数据交换协议:BitSwap协议

1291
来自专栏分子生物和分子模拟计算

Human Hemoglobin

1304
来自专栏SDNLAB

云数据中心网络虚拟化——大二层技术巡礼之NVo3技术DC间隧道

NVo3体系框架只是要求隧道构建在IP网络上,并没有要求一定是要端到端的,因此DC间跨越Internet进行互联的一些技术也属于NVo3框架中。这类技术往往部署...

35214
来自专栏小白课代表

小白课代表的软件目录~还有大家的需求

1113
来自专栏Linuxer的专栏

张亦鸣 : eBPF 简史 (上篇)

数日之前,笔者参加某一技术会议之时,为人所安利了一款开源项目,演讲者对其性能颇为称道,称其乃基于近年在内核中炙手可热的 eBPF 技术。

3280

扫码关注云+社区