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 相关文章推荐
ECMAScript 基础知识
Jun 29 Javascript
Mootools 1.2教程 排序类和方法简介
Sep 15 Javascript
js加强的经典分页实例
Mar 15 Javascript
JS在TextArea光标位置插入文字并实现移动光标到文字末尾
Jun 21 Javascript
点击显示指定元素隐藏其他同辈元素的方法
Feb 19 Javascript
wap浏览自动跳转到wap页面的js代码
May 17 Javascript
使用jQuery不判断浏览器高度解决iframe自适应高度问题
Dec 16 Javascript
jQuery+PHP实现动态数字展示特效
Mar 14 Javascript
JS折半插入排序算法实例
Dec 02 Javascript
Vue2.0设置全局样式(less/sass和css)
Nov 18 Javascript
JS实现键值对遍历json数组功能示例
May 30 Javascript
详解javascript 变量提升(Hoisting)
Mar 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版)
2006/10/09 PHP
[原创]php求圆周率的简单实现方法
2016/05/30 PHP
利用PHP命令行模式采集股票趋势信息
2016/08/09 PHP
在Mac OS下搭建LNMP开发环境的步骤详解
2017/03/10 PHP
PHP小程序支付功能完整版【基于thinkPHP】
2019/03/26 PHP
基于jquery的图片懒加载js
2010/06/30 Javascript
不要在cookie中使用特殊字符的原因分析
2010/07/13 Javascript
js文本框输入点回车触发确定兼容IE、FF等
2013/11/19 Javascript
jQuery队列操作方法实例
2014/06/11 Javascript
JS实现根据文件字节数返回文件大小的方法
2016/08/02 Javascript
AngularJS实现一次监听多个值发生的变化
2016/08/31 Javascript
js事件源window.event.srcElement兼容性写法(详解)
2016/11/25 Javascript
JS实现给对象动态添加属性的方法
2017/01/05 Javascript
js实现数组去重方法及效率?Ρ? target=
2017/02/14 Javascript
深究AngularJS中$sce的使用
2017/06/12 Javascript
详解Vue.js之视图和数据的双向绑定(v-model)
2017/06/23 Javascript
浅谈React碰到v-if
2018/11/04 Javascript
vue+php实现的微博留言功能示例
2019/03/16 Javascript
JavaScript变量作用域及内存问题实例分析
2019/06/10 Javascript
vue使用微信JS-SDK实现分享功能
2019/08/23 Javascript
SSM+layUI 根据登录信息显示不同的页面方法
2019/09/20 Javascript
vue2路由基本用法实例分析
2020/03/06 Javascript
微信小程序入门之绘制时钟
2020/10/22 Javascript
Python Django Vue 项目创建过程详解
2019/07/29 Python
解决pyqt5异常退出无提示信息的问题
2020/04/08 Python
pymysql之cur.fetchall() 和cur.fetchone()用法详解
2020/05/15 Python
Python 实现RSA加解密文本文件
2020/12/30 Python
无畏的旅行:Intrepid Travel
2017/12/20 全球购物
Bose加拿大官方网站:美国知名音响品牌
2019/03/21 全球购物
企事业单位求职者的自我评价
2013/12/28 职场文书
主持词开场白
2014/03/17 职场文书
园林技术专业求职信
2014/07/28 职场文书
销售员工作检讨书(推荐篇)
2014/10/18 职场文书
事业单位财务人员岗位职责
2015/04/14 职场文书
golang中实现给gif、png、jpeg图片添加文字水印
2021/04/26 Golang
Python内置类型集合set和frozenset的使用详解
2022/04/26 Python