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 相关文章推荐
通过js脚本复制网页上的一个表格的不错实现方法
Dec 29 Javascript
FormValid0.5版本发布,带ajax自定义验证例子
Aug 17 Javascript
JS 中document.URL 和 windows.location.href 的区别
Nov 11 Javascript
jQuery修改CSS伪元素属性的方法
Jul 30 Javascript
AngularJS单选框及多选框实现双向动态绑定
Jan 13 Javascript
JS实现table表格数据排序功能(可支持动态数据+分页效果)
May 26 Javascript
浅谈js中startsWith 函数不能在任何浏览器兼容的问题
Mar 01 Javascript
关于Ajax的原理以及代码封装详解
Sep 08 Javascript
在Vue-cli里应用Vuex的state和mutations方法
Sep 16 Javascript
详解vue.js移动端配置flexible.js及注意事项
Apr 10 Javascript
Python版实现微信公众号扫码登陆
May 28 Javascript
Javascript实现打鼓效果
Jan 29 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防盗链的常用方法小结
2010/07/02 PHP
PHP中PDO的错误处理
2011/09/04 PHP
真正根据utf8编码的规律来进行截取字符串的函数(utf8版sub_str )
2012/10/24 PHP
php计算整个mysql数据库大小的方法
2015/06/19 PHP
ThinkPHP实现静态缓存和动态缓存示例代码
2017/05/02 PHP
PHP语言对接抖音快手小红书视频/图片去水印API接口源码
2020/08/11 PHP
利用Keydown事件阻止用户输入实现代码
2014/03/11 Javascript
一个简单的jquery进度条示例
2014/04/28 Javascript
JQuery中节点遍历方法实例
2015/05/18 Javascript
JS+CSS实现DIV层的展开、收缩效果
2016/01/28 Javascript
[原创]JQuery 在表单提交之前修改 提交的值
2016/04/14 Javascript
全面解析JavaScript的Backbone.js框架中的Router路由
2016/05/05 Javascript
JavaScript中对JSON对象的基本操作示例
2016/05/21 Javascript
原生JS实现风箱式demo,并封装了一个运动框架(实例代码)
2016/07/22 Javascript
深入学习jQuery中的data()
2016/12/22 Javascript
微信小程序 网络请求(post请求,get请求)
2017/01/17 Javascript
EasyUI中的dataGrid的行内编辑
2017/06/22 Javascript
react中Suspense的使用详解
2019/09/01 Javascript
node.js事件轮询机制原理知识点
2019/12/22 Javascript
[01:33:07]VGJ.T vs Newbee Supermajor 败者组 BO3 第一场 6.6
2018/06/07 DOTA
[01:02:04]EG vs Liquid 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.23
2019/09/05 DOTA
浅谈Python程序与C++程序的联合使用
2015/04/07 Python
Python3实现并发检验代理池地址的方法
2016/09/18 Python
Python Web编程之WSGI协议简介
2018/07/18 Python
Booking.com西班牙:全球酒店预订
2018/03/30 全球购物
Carolina Lemke Berlin澳大利亚官网:时尚太阳镜品牌
2019/09/17 全球购物
大学应届生求职简历的自我评价
2013/10/08 职场文书
小学生防溺水广播稿
2014/01/12 职场文书
人事专员岗位职责范本
2014/03/04 职场文书
信息技术课后反思
2014/04/27 职场文书
驾驶员培训方案
2014/05/01 职场文书
学校副校长四风对照检查材料整改措施
2014/09/25 职场文书
2014年音乐教师工作总结
2014/12/03 职场文书
2014年学校总务处工作总结
2014/12/08 职场文书
放弃遗产继承公证书
2015/01/26 职场文书
2015年国庆节寄语
2015/08/17 职场文书