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 相关文章推荐
js+xml生成级联下拉框代码
Jul 24 Javascript
jQuery+css3实现Ajax点击后动态删除功能的方法
Aug 10 Javascript
BootStrap 动态添加验证项和取消验证项的实现方法
Sep 28 Javascript
原生js编写焦点图效果
Dec 08 Javascript
JS失效 提示HTML1114: (UNICODE 字节顺序标记)的代码页 utf-8 覆盖(META 标记)的冲突的代码页 utf-8
Jun 23 Javascript
SVG实现时钟效果
Jul 17 Javascript
vue弹窗插件实战代码
Sep 08 Javascript
PM2自动部署代码步骤流程总结
Dec 10 Javascript
详解VUE里子组件如何获取父组件动态变化的值
Dec 26 Javascript
JavaScript实现五子棋小游戏
Oct 26 Javascript
element-plus一个vue3.xUI框架(element-ui的3.x 版初体验)
Dec 02 Vue.js
react合成事件与原生事件的相关理解
May 13 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实现获取域名的方法小结
2014/11/05 PHP
yii实现CheckBox复选框在同一行显示的方法
2014/12/03 PHP
Yii2实现同时搜索多个字段的方法
2016/08/10 PHP
CI框架(CodeIgniter)操作redis的方法详解
2018/01/25 PHP
JS获取页面窗口大小的代码解读
2011/12/01 Javascript
Javascript表格翻页效果的具体实现
2013/10/05 Javascript
NodeJS的url截取模块url-extract的使用实例
2013/11/18 NodeJs
JS如何将数字类型转化为没3个一个逗号的金钱格式
2014/01/27 Javascript
jQuery操作表格(table)的常用方法、技巧汇总
2014/04/12 Javascript
JavaScript实现文本框中默认显示背景图片在获得焦点后消失的方法
2015/07/01 Javascript
JavaScript实现快速排序的方法
2015/07/31 Javascript
JS 调用微信扫一扫功能
2016/12/22 Javascript
使用AngularJS 跨站请求如何解决jsonp请求问题
2017/01/16 Javascript
jQuery插件zTree实现获取一级节点数据的方法
2017/03/08 Javascript
JavaWeb表单及时验证功能在输入后立即验证(含用户类型,性别,爱好...的验证)
2017/06/09 Javascript
JavaScript仿微信(电话)联系人列表滑动字母索引实例讲解(推荐)
2017/08/16 Javascript
详解webpack 打包文件体积过大解决方案(code splitting)
2018/04/10 Javascript
node中IO以及定时器优先级详解
2019/05/10 Javascript
layer弹出层自定义提交取消按钮的例子
2019/09/10 Javascript
JavaScript实现随机五位数验证码
2019/09/27 Javascript
js实现消灭星星(web简易版)
2020/03/24 Javascript
[46:40]VGJ.T vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
在Python中通过threshold创建mask方式
2020/02/19 Python
python实现引用其他路径包里面的模块
2020/03/09 Python
Python常用库Numpy进行矩阵运算详解
2020/07/21 Python
在终端启动Python时报错的解决方案
2020/11/20 Python
基于HTML5新特性Mutation Observer实现编辑器的撤销和回退操作
2016/01/11 HTML / CSS
您附近的水疗和健康场所:Spafinder(美国)
2019/07/05 全球购物
英国最大的独立玩具专卖店:The Entertainer
2019/09/06 全球购物
会计专业大学生职业生涯规划范文
2014/01/11 职场文书
大学生优秀团员事迹材料
2014/01/30 职场文书
学习自我鉴定
2014/02/01 职场文书
党员岗位承诺口号大全
2014/03/28 职场文书
2015年八一建军节慰问信
2015/03/23 职场文书
html+css 实现简易导航栏功能
2021/04/07 HTML / CSS
vue 数字翻牌器动态加载数据
2022/04/20 Vue.js