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 条评论
登录 后参与评论

相关文章

来自专栏小狼的世界

Shell历史

浏览了一下Wiki,把shell的历史简要摘抄了一下,整个发展过程还是很有趣,csh贡献了很多的想法和特性,但是最后却没有流行起来。sh虽然刚开始功能比较简单,...

481
来自专栏张戈的专栏

妹子你真萌:一次心惊肉跳的服务器误删文件的恢复过程

刚在我的订阅里面看到这篇文章,在爆笑之余也让跟我一样的运维农民工们发人深省,所以转过来分享一下。妹子啊妹子,网上找的东西也不能直接照搬啊,太萌了~~哈哈! 作者...

42111
来自专栏FreeBuf

使用Digispark和Duck2Spark打造一个廉价USB橡皮鸭

如今市面上出现了许多优秀的硬件黑客工具,但缺点是这些工具的价格往往非常的高昂。因此,许多黑客更愿意自己动手打造更为廉价的专属版本。本文我将教大家使用Digisp...

574
来自专栏极客慕白的成长之路

迅雷资源助手(TSearch) – 种子搜索神器

迅雷资源助手迅雷资源助手 是一款搜索下载资源的 p2p 种子搜索器,绿色软件,可以进行磁力搜索,电驴搜索,种子搜索,网盘搜索,搜索质量远高于 p2psearch...

7582
来自专栏菜鸟程序员

如何像黑客军团主角那样将文件隐藏在音频中

1074
来自专栏Timhbw博客

分享下平时我在windows平台下开发用的一些比较好的软件-Notepad++(二)

2016-03-0923:23:39 发表评论 947℃热度 Notepad++ 它是 Windows操作系统下的一套文本编辑器(软件版权许可证: GPL),...

29713
来自专栏about云

区块链开发语言之go语言学习线路指导

问题导读 1.为什么学习go语言? 2.你认为该如何入门go语言? 3.你认为go语言需要哪些学习过程?

933
来自专栏Samego开发资源

那个程序员的Linux常用软件清单

2794
来自专栏FreeBuf

帮女神修手机的意外发现:隐匿在iOS文件系统中的隐私信息

说明: 1. 本文仅供安全学习及教学用途,提及的部分技术带有攻击性,请确保合法使用。 2. “这些都不是我干的,我就负责说出来。” 3. 图片仅供参考。 4. ...

3339
来自专栏北京马哥教育

【重大事件】知名终端模拟软件XSHELL多版本存在后门,或上传用户服务器账号密码!

简介 ▼▼▼ Xshell是一款强大,著名的终端模拟软件,被广泛的用于服务器运维和管理,Xshell支持SSH,SFTP,TELNET,RLOGIN和SERIA...

3505

扫码关注云+社区