JavaScript触摸与手势事件

处理Touch事件能让你跟踪用户的每一根手指的位置。你可以绑定以下四种Touch事件:

1.touchstart:  // 手指放到屏幕上的时候触发

2.touchmove:  // 手指在屏幕上移动的时候触发

3.touchend:  // 手指从屏幕上拿起的时候触发

4touchcancel:  // 系统取消touch事件的时候触发。至于系统什么时候会取消,不详

属性

1.client / clientY:// 触摸点相对于浏览器窗口viewport的位置

2.pageX / pageY:// 触摸点相对于页面的位置

3.screenX /screenY:// 触摸点相对于屏幕的位置

4.identifier: // touch对象的unique ID

//touchstart事件

function touchSatrtFunc(e) {

//evt.preventDefault(); //阻止触摸时浏览器的缩放、滚动条滚动等

var touch = e.touches[0]; //获取第一个触点

var x = Number(touch.pageX); //页面触点X坐标

var y = Number(touch.pageY); //页面触点Y坐标

//记录触点初始位置

startX = x;

startY = y;

}

//touchmove事件

function touchMoveFunc(e) {

//evt.preventDefault(); //阻止触摸时浏览器的缩放、滚动条滚动等

var touch = evt.touches[0]; //获取第一个触点

var x = Number(touch.pageX); //页面触点X坐标

var y = Number(touch.pageY); //页面触点Y坐标

var text = ‘TouchMove事件触发:(‘ + x + ‘, ‘ + y + ‘)‘;

//判断滑动方向

if (x - startX != 0) {

//左右滑动

}

if (y - startY != 0) {

//上下滑动

}

}

Mobile Web前端开发系列: 事件处理(二)

(2012-08-07 15:16:42)

转载▼

标签:

杂谈

分类: webapp

上篇文章我们讲了html的基本事件,这篇文章我们着重讲解下触摸事件,触摸事件触发的条件是手指接触屏幕、手指在屏幕上移动或者从屏幕上离开。 事件是触摸的集合,它起始于手指初次放置在屏幕上,终止于最后一个手指离开屏幕。事件从开始到结束过程中的所有触摸操作都存储在相同事件的记录中。

touch事件

touch事件可以分为单点触摸和多点触摸两种,单点触摸高端机一般都支持,Safari2.0、Android3.0以上的版本支持多点触摸,支持最多5个手指同时触摸屏幕,ipad最多支持11个手指同时触摸屏幕, 我们可以采用以下的事件模型捕获这些事件,

ontouchstart ontouchmove ontouchend ontouchcancel

当用户按下手指在屏幕上,ontouchstart会被触发,当用户移动一个或多个手指的时候,ontouchmove会被触发,当用户移走手指, ontouchend被触发。那什么时候触发ontouchcancel呢?当一些更高级别的事件发生的时候,例如,alert,有电话打来或者有 推送的消息提示的时候会取消当前的touch操作,即触发ontouchcancel。当你在开发一个web game的时候,ontouchcancel 对你很重要,你可以在ontouchcancel触发的时候暂停游戏或者保存游戏。

gesture事件

gesture事件的运行原理与touch事件相同,只是gesture事件仅当屏幕上存在至少两个手指时触发,所以Safari2.0、Android3.0以上版本支持, 手势具备诸多优势,可以帮助我们测量两指放缩和旋转操作,事件模型如下,

ongesturestart ongesturechange ongestureend

事件属性

无论使用触摸还是手势事件,你都需要将这些事件转换为单独的触摸来使用它们。为此,你需要访问事件对象的一系列的属性。

targetTouches 目标元素的所有当前触摸 changedTouches 页面上最新更改的所有触摸 touches 页面上的所有触摸

changedTouches、targetTouches和touches分别包含稍微不同的触摸列表。targetTouches和touches分别包含当前位于 屏幕上的手指列表,但changedTouches仅列出最后发生的触摸。如果你在使用touchend或者gestureend事件,那么这个属性 非常重要。在这两种情况下,屏幕上都不会再出现手指,因此targetTouches和touches应该为空,但你仍然可以通过查看 changedTouches数组来了解最后发生的事情。

由于触摸属性都会生成数组,因此你可以使用JavaScript数组函数来访问它们。这意味着,event.touches[0]将返回第一次 触摸,并且可以使用event.touches.length来计算当前存储的触摸数量。

查看单独触摸时,通过使用event.targetTouches[0],你也可以访问其它触摸,每个触摸会包含一些具体信息,

clientX、clientY 相对于当前屏幕的X或Y位置 pageX、pageY 相对于整体页面的X或Y位置 screenX、screenY 相对于用户计算机屏幕的X或Y位置 identifier 事件的唯一标识符 target 生成触摸的目标对象

手势事件的事件对象会比普通触摸事件多两个属性,

rotation 手指的旋转角度 scale 放缩的值
时间: 2024-12-03 17:44:25

JavaScript触摸与手势事件的相关文章

javaScript事件(九)事件类型之触摸与手势事件

一.触摸事件 touchstart:当手指触摸屏幕时触发:即使已经有一个手指放在了屏幕上也会触发. touchmove:当手指在屏幕上滑动时连续地触发.在这个世界发生期间,调用preventDefault()可以阻止滚动. touchend:当手指在屏幕上移开时触发. touchcancel:当系统停止跟踪触摸时触发.关于此事件的确切触发时间,文档中没有明确说明. 上面这几个事件都会冒泡,也都可以取消.虽然这些触摸事件没有在DOM规范中定义,但它们却是以兼容DOM的方式实现的.因此,每个触摸事件

《JAVASCRIPT高级程序设计》事件处理程序和事件类型

一.事件流 谈到事件,首要要理解事件流的概念:事件流是指从页面接受事件的顺序:“DOM2级事件”规定事件流包括三个阶段:事件捕获阶段.处于目标阶段和事件冒泡阶段.目前大部分的浏览器的事件流是事件冒泡,即最开始由具体的元素接收事件,然后逐级传播到不具体的节点,直到传播到windows对象:另一种事件流是事件捕获,目前使用得比较少,是指文档对象先接收到事件,然后逐级向下,一直传播到事件的实际目标. 二.事件处理程序 1.两种表示方式 <input type="button" valu

Qt for android触摸手势事件QGestureEvent

在触摸设备上可以使用Qt的手势事件 要激活手势事件,需要执行以下操作: 第一步,为QWidget控件注册手势事件 QList<Qt::GestureType> gestures; gestures << Qt::PanGesture; gestures << Qt::PinchGesture; gestures << Qt::SwipeGesture; gestures << Qt::TapGesture; gestures << Q

JS—触摸事件、手势事件

JS-触摸事件.手势事件 dbclick触屏设备不支持双击事件.双击浏览器窗口,会放大画面.可以通过在head标签内加上这么一行: <meta name="viewport" content="width=device-width, minimum-scale=1.0,maximum-scale=1.0,user-scalable=no"> 可以实现,我们编写的页面不会随着用的手势而放大缩小.关于meta标签,我还没有研究过,罪过啊. mouse在触屏上

JavaScript中的Event事件对象详解

JavaScript事件[event] 在JavaScript中对于事件来讲,首先,我们需要了解这样几个概念:事件:事件处理程序:事件类型:事件流:事件冒泡:事件捕获:事件对象:浏览器内核:事件绑定:事件方面的性能优化(事件委托.移除事件处理程序):常见的浏览器兼容问题等. 什么是事件event: JavaScript事件是:浏览器.文档(document)窗口中的发生的特定的交互瞬间:而JavaScript和HTML之间的交互行为就是通过事件来触发的. 事件处理程序: 事件处理程序:我们用户在

winphone 中的指针和手势事件

注意  有关这些主题的最新概述,请参阅指针事件和手势事件主题. 小心  W3C 指针事件规范自从在 Internet Explorer 10 中实施以来,已经经历了多次修订.此外,截止到 Internet Explorer 11,已弃用了指针事件 API 上的 MS 供应商前缀.请参阅指针事件更新以了解更改和兼容性最佳做法的摘要. Internet Explorer 10 和适用于 Windows 8 的使用 JavaScript 的 Windows 应用商店应用在 Web 平台中引入了对触控和

手势事件

1.基本的手势事件主要有如下三个方法: dispatchTouchEvent : 判断该事件是否需要下发.返回true表示需要下发给下级视图,返回false表示不需要下发(交给自身的onTouchEvent处理).但是否最终下发,还需根据onInterceptTouchEvent的拦截结果. onInterceptTouchEvent : 判断当前容器是否需要拦截该事件.返回true表示予以拦截(交给自身的onTouchEvent处理).不放给下级视图,返回false表示不拦截该事件. onTo

js实现Mac触摸板双指事件(上/下/左/右/放大/缩小)

前言 这几天在修复一个web问题时,需要捕获Mac触摸板双指事件(上.下.左.右.放大.缩小),但发现并没有现成的轮子,还是要自己造. 例如:jquery.mousewheel.js(添加跨浏览器的鼠标滚轮支持), 给得太简单,没有处理Mac双指行为,所以不能用. 目标 获取Mac触摸板双指行为,具体有两个,一个是实时拖动路线,二是手势(上.下.左.右.放大.缩小). 难点 双指行为只会触发mousewheel事件,其他什么的touch,mouse都不会触发,只能从这个下手. 双指特性 1.在快

移动端手势事件 hammer.JS插件

一.引入hammer.JS 1.下载地址:http://download.csdn.net/detail/webxiaoma/9872249 2.官网地址:http://hammerjs.github.io/examples/ 3.CDN链接:http://hammerjs.github.io/dist/hammer.min.js 二.用法 1.首先我们先写一个出发事件的DOM元素 HTML: <style type="text/css"> html, body { wid