js实现滑动触屏事件监听的方法


Posted in Javascript onMay 05, 2015

本文实例讲述了js实现滑动触屏事件监听的方法。分享给大家供大家参考。具体实现方法如下:

function span_move_fun(){
 var span = document.getElementById("move_k");
 var span_left = $(span).offset().left;
 var span_top = $(span).offset().top;
 var start_left = $(span).offset().left;
 var start_top = $(span).offset().top;
 span.addEventListener('touchstart', function(event) {
 event.preventDefault();
 if (event.targetTouches.length == 1) {
   var touch = event.targetTouches[0];
   span.style.position = "absolute";
 span_top = $(this).offset().top;
 span_left = $(this).offset().left;
 start_top = touch.pageY
 start_left = touch.pageX
   var left = parseFloat(touch.pageX - start_left + span_left-30);
   var top = parseFloat(touch.pageY - start_top + span_top-73);
 span.style.left = String(left) + 'px';
 span.style.top = String(top) + 'px';
   }
  });
  span.addEventListener('touchmove', function(event) {
 event.preventDefault();
 if (event.targetTouches.length == 1) {
 var touch = event.targetTouches[0];
 span.style.position = "absolute";
 var left = parseFloat(touch.pageX - start_left + span_left-30);
   var top = parseFloat(touch.pageY - start_top + span_top-73);
 span.style.left = String(left) + 'px';
 span.style.top = String(top) + 'px';
 }
 });
  span.addEventListener('touchend', function(event) {
  var touch = event.changedTouches[0];
  if(parseFloat(touch.pageX - start_left + span_left-30) <= -5 || parseFloat(touch.pageX - start_left + span_left-30) >= 620 || parseFloat(touch.pageY - start_top + span_top-73) <= -38 || parseFloat(touch.pageY - start_top + span_top-73) >= 587){
  span.style.left = String(span_left-30) + 'px';
 span.style.top = String(span_top-73) + 'px';
  }
 event.stopPropagation();
 });
}

js的左右滑动触屏事件,主要有三个事件:touchstart,touchmove,touchend。这三个事件最重要的属性是 pageX和 pageY,表示X,Y坐标。

touchstart在触摸开始时触发事件

touchend在触摸结束时触发事件

touchmove这个事件比较奇怪,按道理在触摸到过程中不断激发这个事件才对,但是在我的 Android 1.5 中,在 touchstart 激发后激发一次,然后剩余的都和 touchend 差不多同时激发。

这三个事件都都有一个 timeStamp 的属性,查看 timeStamp 属性,可以看到顺序是 touchstart -> touchmove ->touchmove -> … -> touchmove ->touchend。

下面是一段代码实例:

document.getElementsByTagName_r('body')[0].addEventListener('touchstart',function(e){
  nStartY = e.targetTouches[0].pageY;
  nStartX = e.targetTouches[0].pageX;
});
document.getElementsByTagName_r('body')[0].addEventListener('touchend',function(e){
  nChangY = e.changedTouches[0].pageY;
  nChangX = e.changedTouches[0].pageX;
});

PS:
1. touch事件跟click事件是不会被同时触发的。现在的移动设备做的比较好,已经把这个问题完美的避免掉了。

2. 注意触摸的开始和结束位置的位移大小。如果位移小过小应该不做任何动作。

PS:这里再为大家提供一个关于JS事件的在线工具,归纳总结了JS常用的事件类型与函数功能:

javascript事件与功能说明大全:

希望本文所述对大家的javascript程序设计有所帮助。

Javascript 相关文章推荐
表单的一些基本用法与技巧
Jul 15 Javascript
javascript引用对象的方法代码
Aug 13 Javascript
JS的数组的扩展实例代码
Jul 09 Javascript
jQuery 浮动广告实现代码
Dec 25 Javascript
jQuery中add实现同时选择两个id对象
Oct 22 Javascript
javascript计时器事件使用详解
Jan 07 Javascript
原生javascript实现图片按钮切换
Jan 12 Javascript
js窗口关闭提示信息(兼容IE和firefox)
Oct 23 Javascript
基于JS实现textarea中获取动态剩余字数的方法
May 25 Javascript
vue如何获取点击事件源的方法
Aug 10 Javascript
结合Vue控制字符和字节的显示个数的示例
May 17 Javascript
关于ckeditor在bootstrap中modal中弹框无法输入的解决方法
Sep 11 Javascript
JS根据生日算年龄的方法
May 05 #Javascript
js改变Iframe中Src的方法
May 05 #Javascript
js网页滚动条滚动事件实例分析
May 05 #Javascript
jquery判断单选按钮radio是否选中的方法
May 05 #Javascript
JQuery中Bind()事件用法分析
May 05 #Javascript
JS判断字符串包含的方法
May 05 #Javascript
JS实用的动画弹出层效果实例
May 05 #Javascript
You might like
PHP用SAX解析XML的实现代码与问题分析
2011/08/22 PHP
PHP的SQL注入过程分析
2012/01/06 PHP
PHP curl使用实例
2015/07/02 PHP
PHP date()格式MySQL中插入datetime方法
2019/01/29 PHP
onkeyup,onkeydown和onkeypress的区别介绍
2013/10/21 Javascript
Javascript动画的实现原理浅析
2015/03/02 Javascript
需要牢记的JavaScript基础知识
2016/09/25 Javascript
Bootstrap图片轮播组件Carousel使用方法详解
2016/10/20 Javascript
JS中检测数据类型的几种方式及优缺点小结
2016/12/12 Javascript
解决在vue项目中,发版之后,背景图片报错,路径不对的问题
2018/03/06 Javascript
微信小程序局部刷新触发整页刷新效果的实现代码
2018/11/21 Javascript
使用form-create动态生成vue自定义组件和嵌套表单组件
2019/01/18 Javascript
[01:29:31]VP VS VG Supermajor小组赛胜者组第二轮 BO3第一场 6.2
2018/06/03 DOTA
[01:34:42]NAVI vs EG 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
[01:00:13]完美世界DOTA2联赛 LBZS vs Forest 第一场 11.07
2020/11/09 DOTA
Python实现CET查分的方法
2015/03/10 Python
Python循环语句中else的用法总结
2016/09/11 Python
python+VTK环境搭建及第一个简单程序代码
2017/12/13 Python
Python中常用信号signal类型实例
2018/01/25 Python
下载python中Crypto库报错:ModuleNotFoundError: No module named ‘Crypto’的解决
2018/04/23 Python
WxPython建立批量录入框窗口
2019/02/27 Python
python turtle库画一个方格和圆实例
2019/06/27 Python
Python 动态导入对象,importlib.import_module()的使用方法
2019/08/28 Python
pytorch 求网络模型参数实例
2019/12/30 Python
对CSS3选择器的研究(详解)
2016/09/16 HTML / CSS
一款css实现的鼠标经过按钮的特效
2014/09/11 HTML / CSS
土木工程专业个人求职信
2013/12/05 职场文书
国培计划培训感言
2014/03/11 职场文书
作风建设年活动实施方案
2014/10/24 职场文书
2014年教师教学工作总结
2014/11/08 职场文书
2015年质量管理工作总结范文
2015/05/18 职场文书
Python字符串对齐方法使用(ljust()、rjust()和center())
2021/04/26 Python
Python pandas求方差和标准差的方法实例
2021/08/04 Python
十大最强水系宝可梦,最美宝可梦排第三,榜首大家最熟悉
2022/03/18 日漫
flex弹性布局详解
2022/03/20 HTML / CSS
SpringBoot中使用Redis作为全局锁示例过程
2022/03/24 Java/Android