本章的前三節在[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支持但蘋果不可能支持)
## 使用指針事件
事實上因為兼容性問題,直到現在指針事件仍是不可用的,最好還是用蘋果的觸摸事件。