移动平台的触摸事件

  在移动平台中加入触摸事件使得事件处理变得复杂了一些,应为为了和传统的鼠标事件兼容,在移动浏览器中也加入了鼠标事件的模拟。在触摸点击屏幕时,触摸事件和鼠标事件会依次触发,假设在移动设备上点击了浏览器页面,则依次会触发如下的事件:touchstart、touchmove、touchend、mouseover、mousemove、mousedown、mouseup和click。在移动平台中可以触发click事件,是大部分PC端网页可以兼容移动平台的一个重要因素。但遗憾的是,在主流移动浏览器中,触发鼠标事件会滞后300毫秒。这样设计的原因是浏览器需要时间来判断用户是否通过手势操作来缩放页面。300毫秒是人类可以察觉到的延迟。如果在移动端仅仅绑定click事件来处理用户触摸点击的响应,则会影响用户的体验。于是,开发者就需要在移动浏览器中重新模拟一个类似于click的事件避免300毫秒的延迟。大部分主流移动Web框架中也实现了这样的模拟效果,并取名为tap事件。同时也会实现另一个taphold事件,用于代替在PC端浏览器的右键单击事件。这两个自定义事件都是由基本的触摸事件组合模拟,并通过一定的时间间隔判断来决定触发tap事件还是taphold事件。如果期望更深入地了解这两个模拟事件的实现方式,推荐阅读各移动Web框架的源代码。 

原文地址:https://www.cnblogs.com/lcc1995/p/6924381.html