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 相关文章推荐
出现“不能执行已释放的Script代码”错误的原因及解决办法
Aug 29 Javascript
js获取下拉列表的值和元素个数示例
May 07 Javascript
javascript实现的图片切割多块效果实例
May 07 Javascript
JavaScript实现网页加载进度条代码超简单
Sep 21 Javascript
关于原生js中bind函数的简单实现
Aug 10 Javascript
深入浅析JavaScript中的3DES
Aug 24 Javascript
AngularJS  自定义指令详解及实例代码
Sep 14 Javascript
JS针对Array的各种操作汇总
Nov 29 Javascript
详解webpack 配合babel 将es6转成es5 超简单实例
May 02 Javascript
js实现点击图片在屏幕中间弹出放大效果
Sep 11 Javascript
Bootstrap实现前端登录页面带验证码功能完整示例
Mar 26 Javascript
vue 限制input只能输入正数的操作
Aug 05 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中使用mktime获取时间戳的一个黑色幽默分析
2012/05/31 PHP
数组与类使用PHP的可变变量名需要的注意的问题
2013/06/20 PHP
php安装xdebug/php安装pear/phpunit详解步骤(图)
2013/12/22 PHP
php安装ssh2扩展的方法【Linux平台】
2016/07/20 PHP
JQERY limittext 插件0.2版(长内容限制显示)
2010/08/27 Javascript
javascript写的简单的计算器,内容很多,方法实用,推荐
2011/12/29 Javascript
IE浏览器不支持getElementsByClassName的解决方法
2014/08/27 Javascript
jQuery中replaceWith()方法用法实例
2014/12/25 Javascript
js实现支持手机滑动切换的轮播图片效果实例
2015/04/29 Javascript
js实现字符串转日期格式的方法
2015/05/20 Javascript
js实现图片点击左右轮播
2015/07/08 Javascript
基于replaceChild制作简单的吞噬特效
2015/09/21 Javascript
图解JavaScript中的this关键字
2020/05/28 Javascript
浅析jQuery 3.0中的Data
2016/06/14 Javascript
js中document.referrer实现移动端返回上一页
2017/02/22 Javascript
Angular2开发——组件规划篇
2017/03/28 Javascript
一篇文章带你浅入webpack的DLL优化打包
2020/02/20 Javascript
Javascript实现打鼓效果
2021/01/29 Javascript
python 将字符串转换成字典dict
2013/03/24 Python
python中迭代器(iterator)用法实例分析
2015/04/29 Python
mac系统安装Python3初体验
2018/01/02 Python
python定向爬取淘宝商品价格
2018/02/27 Python
python利用selenium进行浏览器爬虫
2019/04/25 Python
python中类的输出或类的实例输出为这种形式的原因
2019/08/12 Python
Python爬虫之Selenium实现窗口截图
2020/12/04 Python
pytorch 计算Parameter和FLOP的操作
2021/03/04 Python
LocalStorage记住用户和密码功能
2017/07/24 HTML / CSS
关于iframe跨域使用postMessage的实现
2019/10/29 HTML / CSS
RentCars.com巴西:汽车租赁网站
2016/08/22 全球购物
比利时香水网上商店:NOTINO
2018/03/28 全球购物
澳大利亚百货商店中销量第一的商务衬衫品牌:Van Heusen
2018/07/26 全球购物
Nginx反爬虫策略,防止UA抓取网站
2021/03/31 Servers
Python基于百度API识别并提取图片中文字
2021/06/27 Python
PostgreSQL 插入INSERT、删除DELETE、更新UPDATE、事务transaction
2022/04/12 PostgreSQL
Golang入门之计时器
2022/05/04 Golang
Android Studio 计算器开发
2022/05/20 Java/Android