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 相关文章推荐
通过jQuery源码学习javascript(三)
Dec 27 Javascript
JavaScript检查某个function是否是原生代码的方法
Aug 20 Javascript
JS特效实现图片自动播放并可控的效果
Jul 31 Javascript
微信小程序 增、删、改、查操作实例详解
Jan 13 Javascript
js判断手机系统是android还是ios
Mar 07 Javascript
Vue分页组件实例代码
Apr 17 Javascript
微信小程序商品到详情的实现
Jun 27 Javascript
React Native仿美团下拉菜单的实例代码
Aug 08 Javascript
JavaScript创建对象的七种方式全面总结
Aug 21 Javascript
Vue-Router实现组件间跳转的三种方法
Nov 07 Javascript
vue项目中将element-ui table表格写成组件的实现代码
Jun 12 Javascript
详解template标签用法(含vue中的用法总结)
Jan 12 Vue.js
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
2006/12/14 PHP
php中使用in_array() foreach array_search() 查找数组是否包含时的性能对比
2015/04/14 PHP
jquery 分页控件实现代码
2009/11/30 Javascript
jQuery setTimeout()函数使用方法
2013/04/07 Javascript
简易的投票系统以及js刷票思路和方法
2015/04/07 Javascript
老生常谈onBlur事件与onfocus事件(js)
2016/07/09 Javascript
JSON键值对序列化和反序列化解析
2017/01/24 Javascript
使用JS获取SessionStorage的值
2018/01/12 Javascript
angularjs1.X 重构controller 的方法小结
2019/08/15 Javascript
JavaScript工具库MyTools详解
2020/01/01 Javascript
JS端基于download.js实现图片、视频时直接下载而不是打开预览
2020/05/09 Javascript
[02:27]DOTA2英雄基础教程 莱恩
2014/01/17 DOTA
Python查找函数f(x)=0根的解决方法
2015/05/07 Python
在Linux系统上通过uWSGI配置Nginx+Python环境的教程
2015/12/25 Python
Python中文分词实现方法(安装pymmseg)
2016/06/14 Python
Python构造自定义方法来美化字典结构输出的示例
2016/06/16 Python
浅谈Python 字符串格式化输出(format/printf)
2016/07/21 Python
利用python画一颗心的方法示例
2017/01/31 Python
python如何派生内置不可变类型并修改实例化行为
2018/03/21 Python
python rolling regression. 使用 Python 实现滚动回归操作
2020/06/08 Python
python单元测试框架pytest的使用示例
2020/10/07 Python
CSS3图片旋转特效(360/60/-360度)
2013/10/10 HTML / CSS
HTML5不支持标签和新增标签详解
2016/06/27 HTML / CSS
日本网路线上商品代购服务:转送JAPAN
2016/08/05 全球购物
VELTRA台湾:世界自由行专家
2017/08/15 全球购物
优秀员工获奖感言
2014/03/01 职场文书
竞聘上岗演讲稿
2014/05/16 职场文书
关于读书的活动方案
2014/08/14 职场文书
党员个人剖析材料2014
2014/10/08 职场文书
大学生助学金感谢信
2015/01/21 职场文书
个人求职意向书
2015/05/11 职场文书
2016年重阳节慰问信
2015/12/01 职场文书
教你使用一行Python代码玩遍童年的小游戏
2021/08/23 Python
解决vue中provide inject的响应式监听
2022/04/19 Vue.js
Linux服务器离线安装 nginx的详细步骤
2022/06/16 Servers