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 个属性用于跟踪触点。
- touches: Touch对象的数组,表示当前屏幕上的每个触点
- targetTouches: Touch对象的数组,表示特定事件目标的触点
- changedTouches :Touch对象的数组,表示自上次用户动作之后变化的触点
每个Touch对象都包含下列属性
- clientX :触点在视口的x坐标
- clientY :触点在视口中的y坐标
- identifier :触点ID
- pageX:触点在页面上的x坐标
- pagey :触点在页面上的y坐标
- screenX:触点在屏幕上的x坐标
- screenY:触点在屏幕上的y坐标
- target:触摸事件的事件目标