1. Safari iOS 定制了一些专有事件,以方便开发者。因为 iOS 设备没有鼠标和键盘,所以常规的鼠 标和键盘事件不足以创建具有完整交互能力的网页。同时,WebKit 也为 Android 定制了很多专有事件, 成为了事实标准,并被纳入 W3C Touch Events 规范。此事件只适用于触屏设备。

    iPhone 3G 发布时,iOS 2.0 内置了新版本的 Safari。这个新的移动 Safari 支持一些与触摸交互有关的 新事件。后来的 Android 浏览器也实现了同样的事件。当手指放在屏幕上、在屏幕上滑动或从屏幕移开 时,触摸事件即会触发。触摸事件有如下几种。

    • touchstart : 手指放到屏幕上时触发(iphone手指轻点触发亮屏)
    • touchmove : 手指在屏幕上滑动时连续触发,此事件可以被preventDefault()阻止
    • touchend : 手指从屏幕上移开时触发
    • touchcancel : 系统停止跟踪触摸时触发。文档中并未明确什么情况下停止跟踪!

    这些事件都会冒泡,也都可以被取消。尽管触摸事件不属于 DOM 规范,但浏览器仍然以兼容 DOM 的方式实现了它们。因此,每个触摸事件的 event 对象都提供了鼠标事件的公共属性:

    • bubbles
    • cancelable
    • view
    • clientX
    • clientY
    • screenX
    • screenY
    • detail
    • altKey
    • shiftKey
    • ctrlKey
    • metaKey

    除了这些公共的 DOM 属性,触摸事件还提供了以下 3 个属性用于跟踪触点。

    1. touches: Touch对象的数组,表示当前屏幕上的每个触点
    2. targetTouches: Touch对象的数组,表示特定事件目标的触点
    3. changedTouches :Touch对象的数组,表示自上次用户动作之后变化的触点

    每个Touch对象都包含下列属性

    • clientX :触点在视口的x坐标
    • clientY :触点在视口中的y坐标
    • identifier :触点ID
    • pageX:触点在页面上的x坐标
    • pagey :触点在页面上的y坐标
    • screenX:触点在屏幕上的x坐标
    • screenY:触点在屏幕上的y坐标
    • target:触摸事件的事件目标