以下文字摘自:
经验分享:写到这个事件的时候有人必然要问了,在触屏中我们使用Click事件不也可以吗?这个Tap事件与Click事件有什么区别呢?博主也曾经有过这样的疑惑,起初在触屏上处理点击的时候也一直用的click事件,并且没也有出现任何问题,直到有一天为一个公司做了微信版本的“连连看”小游戏,连连看的业务简单来说就是屏幕上有很多图片,当点击两个相同图案的图片时可以在中间产生连接线,并且产生爆破效果后消失。这个游戏刚开始做的时候是在ff浏览器上做的测试,鼠标点击后效果非常流畅,但当游戏部署到服务器上并用手机端操作时,iphone和wp都非常流畅,安卓下不管怎么调都是有卡顿。起初以为是手机性能的问题,但换了高配手机后仍然会有卡顿,游戏也不是不能玩,就是反应慢。经过多次的测试后排除了手机配置的硬件原因,开始怀疑click事件。经过网上查阅后才得知,在安卓触屏上,Tap事件和click事件可以同时触发,但click事件会有几百毫秒的延迟,即先触发Tap事件,过一段时间再触发click事件。后来把游戏的所有click事件修改成Tap事件问题就自然解决了。
同上文类似,我们做的是一个页面虚拟键盘,点击BUTTON,修改INPUT的值,结果非常非常慢。开始预估的原因:浏览器没设置好,导致修改INPUT值渲染慢,用settimeout异步发现还是慢,排除这个原因。后来用响应touchstart事件替换掉mousedown或click事件,响应就非常快了。期间发生了一个有趣的事情,在一台4.2.2版本的安卓机上,绑定的事件touchstart和mousedown同时响应了,而在后续的安卓版本上就只响应一个,应该是touchstart事件。
参考: