触摸和指针事件

最后更新于:2022-04-01 03:16:23

本章的前三节在[InfoQ网站](http://www.infoq.com/cn/articles/touch-pointer-event)上有转载。 触摸事件为苹果发明,它将触摸和鼠标两种行为区分开,而微软的指针事件则将它们合并,此标准更具前瞻性,现已~~加入肯德基豪华套餐~~被W3C采纳为正式标准。 ## 触摸事件 1. touchstart 2. touchmove 3. touchend 4. touchcancel (不太被使用) 手势事件:两个或多个触摸事件同时发生。仅Safari和IE支持,不建议使用。 ## 实例 通过实例对比触摸、指针事件与鼠标键盘事件。 * 下拉菜单。对于用mouseover的下拉菜单,触摸几乎不可用。 * 拖拽。触摸和鼠标差不多,键盘难操作。 * 滚动层。鼠标难操作。 ## 指针事件 指针事件合并了触摸和鼠标操作,它的必要性在于有一些超极本、平板电脑(Surface系列)同时支持触摸和鼠标操作,并且需要在两者间进行无缝的切换。 * pointerdown * pointermove * pointerup * pointerover * pointerout ## 触摸事件的级联 移动浏览器同时支持触摸事件和鼠标事件,会导致一个触摸动作触发多个事件。 * 触摸(Tap):touchstart/pointerdown、touchend/pointerup、mouseover、mousemove、mousedown、mouseup、click、:hover样式(需要注意的是为了兼容mouseover,抬起手指并不会触发mouseout,再次触摸才会) * 滑动(Swipe):touchstart、touchmove、touchend、scroll * 缩放(Pinch):touchstart、touchmove、touchend、scroll,可能还有resize * 双触(double-tap):touchstart、两次touchend、scroll,可能还有resize * 按住(touchhold):touchstart、touchend,有些浏览器还有contextmenu ## 剖析click 300毫秒问题,无解。(Chrome支持但苹果不可能支持) ## 使用指针事件 事实上因为兼容性问题,直到现在指针事件仍是不可用的,最好还是用苹果的触摸事件。
';