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 相关文章推荐
在textarea中显示html页面的javascript代码
Apr 20 Javascript
js、css、img等浏览器缓存问题的2种解决方案
Oct 23 Javascript
JQuery.get提交页面不跳转的解决方法
Jan 13 Javascript
js仿土豆网带缩略图的焦点图片切换效果实现方法
Feb 23 Javascript
JavaScript中的Promise使用详解
Jun 24 Javascript
仅9张思维导图帮你轻松学习Javascript 就这么简单
Jun 01 Javascript
浅谈js的html元素的父节点,子节点
Aug 06 Javascript
vue中用H5实现文件上传的方法实例代码
May 27 Javascript
Vue中如何实现proxy代理
Apr 20 Javascript
jquery.onoff实现简单的开关按钮功能(推荐)
May 24 jQuery
详解Axios 如何取消已发送的请求
Oct 20 Javascript
微信小程序页面上下滚动效果
Nov 18 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数组是否为空的代码
2011/09/08 PHP
php calender(日历)二个版本代码示例(解决2038问题)
2013/12/24 PHP
PHP代码实现表单数据验证类
2015/07/28 PHP
php如何比较两个浮点数是否相等详解
2019/02/12 PHP
js程序中美元符号$是什么
2008/06/05 Javascript
Mootools 1.2教程 正则表达式
2009/09/15 Javascript
简单的Jquery遮罩层代码实例
2013/11/14 Javascript
JavaScript的常见兼容问题及相关解决方法(chrome/IE/firefox)
2013/12/31 Javascript
js实现数字每三位加逗号的方法
2015/02/05 Javascript
iscroll.js的上拉下拉刷新时无法回弹的解决方法
2016/02/18 Javascript
Bootstrap3学习笔记(三)之表格
2016/05/20 Javascript
nodejs利用http模块实现银行卡所属银行查询和骚扰电话验证示例
2016/12/30 NodeJs
Vuejs仿网易云音乐实现听歌及搜索功能
2017/03/30 Javascript
Vue实现自定义下拉菜单功能
2018/07/16 Javascript
微信小程序自定义组件传值 页面和组件相互传数据操作示例
2019/05/05 Javascript
详解Vue demo实现商品列表的展示
2019/05/07 Javascript
JS实现商品橱窗特效
2020/01/09 Javascript
浅析Python中的多重继承
2015/04/28 Python
开始着手第一个Django项目
2015/07/15 Python
TF-IDF与余弦相似性的应用(一) 自动提取关键词
2017/12/21 Python
python将字典列表导出为Excel文件的方法
2019/09/02 Python
python 操作hive pyhs2方式
2019/12/21 Python
Python实现点云投影到平面显示
2020/01/18 Python
Vs Code中8个好用的python 扩展插件
2020/10/12 Python
python中的列表和元组区别分析
2020/12/30 Python
Python爬虫爬取微博热搜保存为 Markdown 文件的源码
2021/02/22 Python
CSS3 :nth-child()伪类选择器实现奇偶行显示不同样式
2013/11/05 HTML / CSS
优秀员工年终发言演讲稿
2014/01/01 职场文书
简历里的自我评价
2014/01/31 职场文书
爱祖国演讲稿
2014/05/04 职场文书
假释思想汇报范文
2014/10/11 职场文书
呼兰河传读书笔记
2015/06/30 职场文书
《赵州桥》教学反思
2016/02/17 职场文书
Nebula Graph解决风控业务实践
2022/03/31 MySQL
mysql使用instr达到in(字符串)的效果
2022/04/03 MySQL
在MySQL中你成功的避开了所有索引
2022/04/20 MySQL