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的数组与字典用法与遍历对象的属性技巧
Nov 07 Javascript
浅谈关于JavaScript的语言特性分析
Apr 11 Javascript
javascript ajax 仿百度分页函数
Oct 29 Javascript
jQuery模拟点击A标记示例参考
Apr 17 Javascript
For循环中分号隔开的3部分的执行顺序探讨
May 27 Javascript
AngularJS单选框及多选框实现双向动态绑定
Jan 13 Javascript
基于JavaScript实现动态添加删除表格的行
Feb 01 Javascript
textarea 在浏览器中固定大小和禁止拖动的实现方法
Dec 03 Javascript
jQuery初级教程之网站品牌列表效果
Aug 02 jQuery
详解axios 全攻略之基本介绍与使用(GET 与 POST)
Sep 15 Javascript
浅谈函数调用的不同方式,以及this的指向
Sep 17 Javascript
在小程序开发中使用npm的方法
Oct 17 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中使用Oracle数据库(5)
2006/10/09 PHP
WML,Apache,和 PHP 的介绍
2006/10/09 PHP
PHP+Mysql+jQuery中国地图区域数据统计实例讲解
2015/10/10 PHP
php防止sql注入的方法详解
2017/02/20 PHP
JavaScript While 循环基础教程
2007/04/05 Javascript
javascript实现的动态添加表单元素input,button等(appendChild)
2007/11/24 Javascript
JavaScript 对象、函数和继承
2009/07/07 Javascript
jQuery 学习入门篇附实例代码
2010/03/16 Javascript
JavaScript常用函数工具集:lao-utils
2016/03/01 Javascript
去除html代码里面的script正则方法
2016/05/19 Javascript
JavaScript 继承详解(五)
2016/10/11 Javascript
Angular.js实现注册系统的实例详解
2016/12/18 Javascript
原生js实现轮播图
2017/02/27 Javascript
vue 中自定义指令改变data中的值
2017/06/02 Javascript
JS实现图片旋转动画效果封装与使用示例
2018/07/09 Javascript
区别JavaScript函数声明与变量声明
2018/09/12 Javascript
JS实现表单中点击小眼睛显示隐藏密码框中的密码
2020/04/13 Javascript
解决vue的touchStart事件及click事件冲突问题
2020/07/21 Javascript
[01:00]选手抵达华西村 整装待发备战2016国际邀请赛中国区预选赛
2016/06/25 DOTA
python xpath获取页面注释的方法
2019/01/14 Python
如何基于python实现画不同品种的樱花树
2020/01/03 Python
Python运行DLL文件的方法
2020/01/17 Python
selenium+headless chrome爬虫的实现示例
2021/01/08 Python
基于HTML5陀螺仪实现ofo首页眼睛移动效果的示例
2017/07/31 HTML / CSS
华纳兄弟工作室的官方授权商店:WB Shop
2018/11/30 全球购物
C#怎么让一个窗口居中显示?
2015/10/20 面试题
优秀技术工人先进材料
2014/02/17 职场文书
团队口号大全
2014/06/06 职场文书
个人政风行风自查自纠报告
2014/10/21 职场文书
国际贸易实训报告
2014/11/05 职场文书
中秋节主题班会
2015/08/14 职场文书
毕业生就业推荐表自我鉴定
2019/06/20 职场文书
浅谈tf.train.Saver()与tf.train.import_meta_graph的要点
2021/05/26 Python
Unicode中的CJK(中日韩统一表意文字)字符小结
2021/12/06 HTML / CSS
mapstruct的用法之qualifiedByName示例详解
2022/04/06 Java/Android
MySQL中order by的执行过程
2022/06/05 MySQL