search
开发文档
开发文档/小游戏开发/API/基础/触摸事件
触摸事件更新时间:2025-12-19 10:44:03

touchstart

基础信息说明

功能概述:

  • window.addEventListener("touchstart", callback, false):监听开始触摸事件
  • window.removeEventListener("touchstart", callback):取消监听开始触摸事件
项目说明
版本要求
前提条件
使用限制
相关教程

参数说明

window.addEventListener("touchstart", callback, false)

属性名类型默认值(如有)必填说明
eventString-事件类型,固定为 "touchstart"
callbackFunction-事件回调函数,当开始触摸事件触发时调用。回调函数接收一个事件对象作为参数
useCaptureBooleanfalse是否在捕获阶段触发,通常传入 false 或不传(默认为 false)

window.removeEventListener("touchstart", callback)

属性名类型默认值(如有)必填说明
eventString-事件类型,固定为 "touchstart"
callbackFunction-要移除的事件回调函数,必须与 addEventListener 时传入的同一个函数引用

返回值说明

同步方法:addEventListener 和 removeEventListener 均为同步接口,调用后立即返回,无返回值。

回调结果说明

  • touchstart 事件为异步事件回调。addEventListener 方法用于注册回调函数,该回调函数会在手指触摸屏幕时被异步触发,而不是在注册时立即执行。

触摸事件回调由底层触摸系统在用户触摸屏幕时触发。回调的触发时机如下:

  • touchstart:当手指触摸屏幕时立即触发

回调成功

touchstart 回调

TouchEvent 对象属性

属性名类型说明
touchesArray当前所有触摸点的数组,数组元素为 Touch 对象
changedTouchesArray本次事件中新加入的触摸点数组,元素为 Touch 对象
targetTouchesArray仍与当前事件目标相关的触摸点数组
timeStampNumber事件触发时间戳(毫秒)
typeString事件类型,固定为 "touchstart"
targetnull触发事件的目标
currentTargetnull当前事件处理目标
eventPhaseNumber事件所处阶段,2 表示处于冒泡阶段
preventDefaultFunction阻止默认行为
stopPropagationFunction阻止事件继续冒泡

运行时对象上还存在 _type、_target 等内部字段,请根据实际情况使用。

Touch 对象属性说明

属性名类型说明
identifierNumber触摸点的唯一标识符
clientXNumber触摸点相对于视口左上角的 X 坐标(像素)
clientYNumber触摸点相对于视口左上角的 Y 坐标(像素)
pageXNumber触摸点相对于页面左上角的 X 坐标(像素)
pageYNumber触摸点相对于页面左上角的 Y 坐标(像素)
targetObject触摸目标

示例代码

// 定义触摸开始事件处理函数(最简示例)
function handleTouchStart(event) {
// 直接查看回调入参(TouchEvent)
console.log('touchstart event:', event)

// 常见:查看第一个触摸点(Touch)
const firstTouch = event?.touches?.[0]
console.log('first touch:', firstTouch)
}

// 注册与移除监听(需要相同函数引用)
window.addEventListener('touchstart', handleTouchStart, false)
// window.removeEventListener('touchstart', handleTouchStart, false)

注意事项

  • addEventListener 和 removeEventListener 必须使用同一个函数引用才能正确移除监听
  • 如果使用匿名函数作为回调,将无法通过 removeEventListener 移除监听
  • touchstart 事件在手指刚接触屏幕时立即触发,通常用于检测触摸开始
  • 支持多点触摸,touches 数组包含所有当前触摸点
  • changedTouches 数组包含本次事件中新增的触摸点

touchmove

基础信息说明

功能概述:

  • window.addEventListener("touchmove", callback, false):监听触点移动事件
  • window.removeEventListener("touchmove", callback):取消监听触点移动事件
项目说明
版本要求
前提条件
使用限制
相关教程

参数说明

window.addEventListener("touchmove", callback, false)

属性名类型默认值必填说明
eventString-事件类型,固定为 "touchmove"
callbackFunction-事件回调函数,当触点移动事件触发时调用。回调函数接收一个事件对象作为参数
useCaptureBooleanfalse是否在捕获阶段触发,通常传入 false 或不传(默认为 false)

window.removeEventListener("touchmove", callback)

属性名类型默认值必填说明
eventString-事件类型,固定为 "touchmove"
callbackFunction-要移除的事件回调函数,必须与 addEventListener 时传入的同一个函数引用

返回值说明

同步方法:addEventListener 和 removeEventListener 均为同步接口,调用后立即返回,无返回值。

回调结果说明

touchmove 事件为异步事件回调。addEventListener 方法用于注册回调函数,该回调函数会在手指在屏幕上移动时被异步触发,而不是在注册时立即执行。

触摸事件回调由底层触摸系统在用户移动手指时触发。

回调成功

touchmove 回调

属性名类型说明
typeString事件类型,为 "touchend"
timeStampNumber事件触发的时间戳(毫秒整数)
touchesArray当前活跃触点集合,触点结束后为空数组
changedTouchesArray本次结束的触点集合,可通过索引访问
targetTouchesArray当前与事件目标关联的触点集合
_typeString内部类型标记,为 "touchend"
_targetany内部保存的目标对象
_currentTargetany内部保存的当前目标
_eventPhaseNumber事件所处阶段(触发时为冒泡阶段)
_passiveListenerany被动监听器引用,当前环境下为 null
_stoppedBoolean是否停止传播标记,默认 false
_canceledBoolean是否被取消标记,默认 false

Touch 对象属性

属性名类型说明
identifierNumber唯一标识符(示例常见为 0 或其他整数)
pageXNumber结束瞬间相对于页面的 X 坐标
pageYNumber结束瞬间相对于页面的 Y 坐标
clientXNumber结束瞬间相对于视口的 X 坐标
clientYNumber结束瞬间相对于视口的 Y 坐标
targetany触点目标对象(在该环境打印为 global 等非 DOM 对象)

示例代码

// 定义触摸结束事件处理函数(最简示例)
function handleTouchEnd(event) {
console.log('touchend event:', event)

// 常见:查看第一个离开屏幕的触点(Touch)
const firstChanged = event?.changedTouches?.[0]
console.log('first changed touch:', firstChanged)
}

// 注册与移除监听(需要相同函数引用)
window.addEventListener('touchend', handleTouchEnd, false)
// window.removeEventListener('touchend', handleTouchEnd, false)

注意事项

  • addEventListener 和 removeEventListener 必须使用同一个函数引用才能正确移除监听
  • 如果使用匿名函数作为回调,将无法通过 removeEventListener 移除监听
  • touchend 事件在手指离开屏幕时触发,通常用于检测触摸结束或完成点击操作
  • 支持多点触摸,touches 数组包含所有当前仍在屏幕上的触摸点(已离开的触摸点不在其中)
  • changedTouches 数组包含本次事件中离开的触摸点
  • touchend 事件中的坐标是手指离开屏幕时的最后位置

touchcancel

基础信息说明

功能描述:监听/取消监听触点失效事件,当触摸事件被系统取消时触发该事件(例如来电、系统弹窗等中断触摸操作)

  • window.addEventListener("touchcancel", callback, false):监听触点失效事件
  • window.removeEventListener("touchcancel", callback):取消监听触点失效事件
项目说明
版本要求
前提条件
使用限制
相关教程

参数说明

window.addEventListener("touchcancel", callback, false)

属性名类型默认值(如有)必填说明
eventString-事件类型,固定为 "touchcancel"
callbackFunction-事件回调函数,当触点失效事件触发时调用。回调函数接收一个事件对象作为参数
useCaptureBooleanfalse是否在捕获阶段触发,通常传入 false 或不传(默认为 false)

window.removeEventListener("touchcancel", callback)

属性名类型默认值(如有)必填说明
eventString-事件类型,固定为 "touchcancel"
callbackFunction-要移除的事件回调函数,必须与 addEventListener 时传入的同一个函数引用

返回值说明

同步方法:addEventListener 和 removeEventListener 均为同步接口,调用后立即返回,无返回值。

回调结果说明

touchcancel 事件为异步事件回调。addEventListener 方法用于注册回调函数,该回调函数会在触摸事件被系统取消时被异步触发,而不是在注册时立即执行。

回调成功

touchend 回调

TouchEvent 对象属性

属性名类型说明
typeString"touchcancel"
timeStampNumber事件触发时间戳(毫秒,小数形式)
isTrustedBooleantrue
bubblesBooleantrue
cancelableBooleanfalse(无法 preventDefault)
eventPhaseNumber0(事件处于 NONE 阶段)
targetElement实测为触摸区域 DOM,例如 div#testArea
currentTargetanynull(示例代码未绑定到具体元素)
touchesTouchList当前仍在屏幕上的触点集合,触点被取消后长度为 0
targetTouchesTouchList与目标元素关联的触点集合,触点取消后长度为 0
changedTouchesTouchList本次被系统取消的触点集合(长度为触点数量,示例为 1)
sourceCapabilitiesInputDeviceCapabilities含 firesTouchEvents: true
viewWindow触发事件的窗口对象

可通过 event.changedTouches.item(0) 或 event.changedTouches[0] 访问第一个被取消的触点。

Touch 对象属性

属性名类型说明
identifierNumber唯一标识符
targetElement触点目标元素(示例为 div#testArea)
clientXNumber取消瞬间相对于视口的 X 坐标
clientYNumber取消瞬间相对于视口的 Y 坐标
pageXNumber取消瞬间相对于页面的 X 坐标
pageYNumber取消瞬间相对于页面的 Y 坐标
screenXNumber取消瞬间相对于屏幕的 X 坐标
screenYNumber取消瞬间相对于屏幕的 Y 坐标
forceNumber触点压力,实测为 1
radiusXNumber触点水平半径
radiusYNumber触点垂直半径
rotationAngleNumber触点椭圆的旋转角度

示例代码

// 定义触点失效事件处理函数(最简示例)
function handleTouchCancel(event) {
console.log('touchcancel event:', event)

// 常见:查看第一个被系统取消的触点(Touch)
const firstCancelled = event?.changedTouches?.[0]
console.log('first cancelled touch:', firstCancelled)
}

// 注册与移除监听(需要相同函数引用)
window.addEventListener('touchcancel', handleTouchCancel, false)
// window.removeEventListener('touchcancel', handleTouchCancel, false)

注意事项

  • addEventListener 和 removeEventListener 必须使用同一个函数引用才能正确移除监听
  • 如果使用匿名函数作为回调,将无法通过 removeEventListener 移除监听
  • touchcancel 事件在触摸操作被系统中断时触发,通常需要在此事件中清理触摸相关的状态
  • 支持多点触摸,touches/targetTouches 为 TouchList,包含所有当前仍在屏幕上的触摸点(被取消的触摸点不在其中)
  • changedTouches 为 TouchList,包含本次事件中被取消的触摸点
  • touchcancel 事件中的坐标是触摸被取消时的最后位置
  • 常见的触发场景:来电、系统弹窗、应用切换到后台、触摸操作超出有效区域等
  • 建议在 touchcancel 事件中执行与 touchend 类似的清理操作,以确保应用状态的一致性
上一篇:分包加载
下一篇:更新
文档内容是否有帮助?
有帮助
无帮助