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 相关文章推荐
document 和 document.all 分别什么时候用
Jun 22 Javascript
解决jquery异步按一定的时间间隔刷新问题
Dec 10 Javascript
使用js实现关闭js弹出层的窗口
Feb 10 Javascript
js遍历子节点子元素附属性及方法
Aug 19 Javascript
兼容主流浏览器的JS复制内容到剪贴板
Dec 12 Javascript
JavaScript语言对Unicode字符集的支持详解
Dec 30 Javascript
使用jquery获取url及url参数的简单实例
Jun 14 Javascript
jQuery插件jquery.kxbdmarquee.js实现无缝滚动效果
Feb 15 Javascript
jQuery实现一个简单的验证码功能
Jun 26 jQuery
Angular实现类似博客评论的递归显示及获取回复评论的数据
Nov 06 Javascript
vue 纯js监听滚动条到底部的实例讲解
Sep 03 Javascript
分享一款超好用的JavaScript 打包压缩工具
Apr 26 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实现12306余票查询、价格查询示例
2014/04/17 PHP
php生成图片验证码的实例讲解
2015/08/03 PHP
PHP Ajax实现无刷新附件上传
2016/08/17 PHP
laravel 之 Eloquent 模型修改器和序列化示例
2019/10/17 PHP
jquery 表单取值常用代码
2009/12/22 Javascript
Js如何判断客户端是PC还是手持设备简单分析
2012/11/22 Javascript
方便实用的jQuery checkbox复选框全选功能简单实例
2013/10/09 Javascript
使用简洁的jQuery方法实现隔行换色功能
2014/01/02 Javascript
jQuery中:first选择器用法实例
2014/12/30 Javascript
jQuery实现标题有打字效果的焦点图代码
2015/11/16 Javascript
Angular2  NgModule 模块详解
2016/10/19 Javascript
利用JS屏蔽页面中的Enter按键提交表单的方法
2016/11/25 Javascript
ES6中新增的Object.assign()方法详解
2017/09/22 Javascript
详解在不使用ssr的情况下解决Vue单页面SEO问题
2018/11/08 Javascript
搭建基于express框架运行环境的方法步骤
2018/11/15 Javascript
JS获取月的第几周和年的第几周实例代码
2018/12/05 Javascript
vue使用vuex实现首页导航切换不同路由的方法
2019/05/08 Javascript
在微信小程序中渲染HTML内容3种解决方案及分析与问题解决
2020/01/12 Javascript
js实现单元格拖拽效果
2020/02/10 Javascript
JavaScript中继承原理与用法实例入门
2020/05/09 Javascript
纯JS开发baguetteBox.js响应式画廊插件
2020/06/28 Javascript
[02:51]DOTA2 Supermajor小组分组对阵抽签仪式
2018/06/01 DOTA
[34:47]完美世界DOTA2联赛PWL S2 Magma vs LBZS 第一场 11.18
2020/11/18 DOTA
Python生成器以及应用实例解析
2018/02/08 Python
python实现简易数码时钟
2021/02/19 Python
对Python生成汉字字库文字,以及转换为文字图片的实例详解
2019/01/29 Python
python根据文章标题内容自动生成摘要的实例
2019/02/21 Python
如何通过python实现全排列
2020/02/11 Python
python读取文件指定行内容实例讲解
2020/03/02 Python
python上传时包含boundary时的解决方法
2020/04/08 Python
详解Flask前后端分离项目案例
2020/07/24 Python
使用CSS3的appearance属性改变元素的外观的方法
2015/12/12 HTML / CSS
女子锻炼服装和瑜伽服装:Splits59
2019/03/04 全球购物
自荐信格式简述
2014/01/25 职场文书
酒店七夕情人节活动策划方案
2014/08/24 职场文书
优秀员工事迹材料
2014/12/20 职场文书