javascript移动开发中touch触摸事件详解


Posted in Javascript onMarch 18, 2016

事件对象是用来记录一些事件发生时的相关信息的对象。事件对象只有事件发生时才会产生,并且只能是事件处理函数内部访问,在所有事件处理函数运行结束后,事件对象就被销毁!

  • W3C DOM把事件对象作为事件处理函数的第一个参数传入进去
  • IE将事件对象作为window对象的一个属性(相当于全局变量)

originalEvent对象

在一次偶然的使用中,我发现当使用on()函数并且传入第二个选择器参数时,e.touches[0]的访问为undefined,打印e发现,它的事件对象不是原生的事件对象。经查阅发现它是jquery事件对象。

$(window).on("touchstart","body",function(e){
  console.log(e)
})

javascript移动开发中touch触摸事件详解

上面例子中event中有一个originalEvent属性,而这才是真正的touch事件。jQuery.Event 是一个构造函数,其创建一个可读写的jQuery事件对象,并在event 对象保留了对这个原生事件对象 event 的引用($event.originalEvent)。我们绑定的事件处理程序所处理的事件对象都是 $event。该方法也可以传递一个自定义事件的类型名,用于生成用户自定义事件对象。

touch事件

touchmove: 当手指在屏幕上滑动的时候连续地触发。
touchstart: 当手指触摸屏幕时候触发,即使已经有一个手指放在屏幕上也会触发
touchend: 当手指从屏幕上离开的时候触发。

TouchEvent对象

每一个touch事件的触发都会产生一个TouchEvent对象,以下是TouchEvent对象三个比较常用的重要属性

touches 当前位于屏幕上的所有手指的一个列表。
targetTouches 特定于事件目标的Touch对象的数组。[当前手指]
changeTouches 表示自上次触摸以来发生了什么改变的Touch对象的数组。

在这里,我用js写了一个touch事件,点击屏幕可触发,将其事件事件对象在控制台打印出,结果如下(箭头指向的是上述三个属性):

window.addEventListener("touchstart",function(event){
  console.log(event);
})

javascript移动开发中touch触摸事件详解

触摸事件对象属性

touches、targetTou、changeTouches都包含以下属性值

clientX:触摸目标在视口中的x坐标。
clientY:触摸目标在视口中的y坐标。
identifier:标识触摸的唯一ID。
pageX:触摸目标在页面中的x坐标。
pageY:触摸目标在页面中的y坐标。
screenX:触摸目标在屏幕中的x坐标。
screenY:触摸目标在屏幕中的y坐标。
target:触摸的DOM节点目标。
还是上面的那个例子,changeTouches对象在控制台输出如下:

javascript移动开发中touch触摸事件详解

以上就是本文的全部内容,希望对大家的学习有所帮助。

Javascript 相关文章推荐
javascript之对系统的toFixed()方法的修正
May 08 Javascript
Javascript学习笔记6 prototype的提出
Jan 11 Javascript
JavaScript数组函数unshift、shift、pop、push使用实例
Aug 27 Javascript
jquery验证手机号是否正确实例讲解
Nov 17 Javascript
省市二级联动小案例讲解
Jul 24 Javascript
javascript 正则表达式分组、断言详解
Apr 20 Javascript
Angular 4.x 路由快速入门学习
May 03 Javascript
JS中offset和匀速动画详解
Feb 06 Javascript
JS实现简单的文字无缝上下滚动功能示例
Jun 22 Javascript
VUE 解决mode为history页面为空白的问题
Nov 01 Javascript
基于vue实现简易打地鼠游戏
Aug 21 Javascript
vue项目打包为APP,静态资源正常显示,但API请求不到数据的操作
Sep 12 Javascript
使用JavaScript为Kindeditor自定义按钮增加Audio标签
Mar 18 #Javascript
基于jQuery实现收缩展开功能
Mar 18 #Javascript
基于javascript显示当前时间以及倒计时功能
Mar 18 #Javascript
jQuery.deferred对象使用详解
Mar 18 #Javascript
JS中的二叉树遍历详解
Mar 18 #Javascript
简述JavaScript提交表单的方式 (Using JavaScript Submit Form)
Mar 18 #Javascript
Javascript的表单验证-揭开正则表达式的面纱
Mar 18 #Javascript
You might like
php空间不支持socket但支持curl时recaptcha的用法
2011/11/07 PHP
利用PHP+JS实现搜索自动提示(实例)
2013/06/09 PHP
排序算法之PHP版快速排序、冒泡排序
2014/04/09 PHP
Yii2增加验证码步骤详解
2016/04/25 PHP
PHP基于curl实现模拟微信浏览器打开微信链接的方法示例
2019/02/15 PHP
一段好玩的JavaScript代码
2006/12/01 Javascript
js中如何把字符串转化为对象、数组示例代码
2013/07/17 Javascript
java与javascript之间json格式数据互转介绍
2013/10/29 Javascript
jquery实现树形二级菜单实例代码
2013/11/20 Javascript
JavaScript1.6数组新特性介绍以及JQuery的几个工具方法
2013/12/06 Javascript
jQuery中使用data()方法读取HTML5自定义属性data-*实例
2014/04/11 Javascript
javascript教程:关于if简写语句优化的方法
2014/05/17 Javascript
深入理解JavaScript系列(30):设计模式之外观模式详解
2015/03/03 Javascript
浅谈document.write()输出样式
2015/05/07 Javascript
NodeJS遍历文件生产文件列表功能示例
2017/01/22 NodeJs
基于对象合并功能的实现示例
2017/10/10 Javascript
微信小程序中如何计算距离某个节日还有多少天
2019/07/15 Javascript
浅谈bootstrap layer.open中end的使用方法
2019/09/12 Javascript
[01:09:24]Ti4开幕式
2014/07/19 DOTA
Python读取图片为16进制表示简单代码
2018/01/19 Python
python利用selenium进行浏览器爬虫
2019/04/25 Python
基于树莓派的语音对话机器人
2019/06/17 Python
Django如何实现上传图片功能
2019/08/16 Python
如何使用Python破解ZIP或RAR压缩文件密码
2020/01/09 Python
Python实现井字棋小游戏
2020/03/09 Python
Jupyter Notebook打开任意文件夹操作
2020/04/14 Python
python3代码中实现加法重载的实例
2020/12/03 Python
python中最小二乘法详细讲解
2021/02/19 Python
中国高端鲜花第一品牌:roseonly(一生只送一人)
2017/02/12 全球购物
Sport-Thieme荷兰:购买体育用品
2019/08/25 全球购物
人事任命书格式
2014/06/05 职场文书
汉语言文学专业自荐信
2014/06/11 职场文书
关于旅游的活动方案
2014/08/15 职场文书
俞敏洪一分钟演讲稿
2014/08/26 职场文书
员工培训协议书
2014/09/15 职场文书
结婚通知短信大全
2015/04/17 职场文书