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 12 Javascript
ie支持function.bind()方法实现代码
Dec 27 Javascript
jQuery登陆判断简单实现代码
Apr 21 Javascript
JS+CSS实现鼠标滑过时动态翻滚的导航条效果
Sep 24 Javascript
javascript跨域的方法汇总
Oct 23 Javascript
Jquery UI实现一次拖拽多个选中的元素操作
Dec 01 Javascript
浅谈javascript中执行环境(作用域)与作用域链
Dec 08 Javascript
jquery实现页面加载效果
Feb 21 Javascript
解决vue router使用 history 模式刷新后404问题
Jul 19 Javascript
微信小程序 页面跳转传值实现代码
Jul 27 Javascript
jquery+css实现Tab栏切换的代码实例
May 14 jQuery
JavaScript圣杯布局与双飞翼布局实现案例详解
Aug 05 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
消息持续发送的完整例子
2006/10/09 PHP
php删除页面记录 同时刷新页面 删除条件用GET方式获得
2012/01/10 PHP
windows环境下php配置memcache的具体操作步骤
2013/06/09 PHP
基于PHP的简单采集数据入库程序
2014/07/30 PHP
thinkphp3.2.2前后台公用类架构问题分析
2014/11/25 PHP
php基于GD库画五星红旗的方法
2015/02/24 PHP
PHP判断表达式中括号是否匹配的简单实例
2016/10/22 PHP
支持汉转拼和拼音分词的PHP中文工具类ChineseUtil
2018/02/23 PHP
PHP生成腾讯云COS接口需要的请求签名
2018/05/20 PHP
PHP的PDO错误与错误处理
2019/01/27 PHP
PDO::query讲解
2019/01/29 PHP
PHP asXML()函数讲解
2019/02/03 PHP
php实现简单四则运算器
2020/11/29 PHP
filters.revealTrans.Transition使用方法小结
2010/08/19 Javascript
Node.js操作Firebird数据库教程
2016/03/04 Javascript
Js与Jq获取浏览器和对象值的方法
2016/03/18 Javascript
AngularJS ng-bind-template 指令详解
2016/07/30 Javascript
layer弹出的iframe层在执行完毕后关闭当前弹出层的方法
2018/08/17 Javascript
Node.js 使用request模块下载文件的实例
2018/09/05 Javascript
在vue中实现echarts随窗体变化
2020/07/27 Javascript
微信小程序入门之指南针
2020/10/22 Javascript
python找出完数的方法
2018/11/12 Python
使用python打印十行杨辉三角过程详解
2019/07/10 Python
详解python路径拼接os.path.join()函数的用法
2019/10/09 Python
如何基于python实现画不同品种的樱花树
2020/01/03 Python
python矩阵运算,转置,逆运算,共轭矩阵实例
2020/05/11 Python
Django restful framework生成API文档过程详解
2020/11/12 Python
医学院四年学习生活的自我评价
2013/11/06 职场文书
单位介绍信范文
2014/01/18 职场文书
会计学专业学生的求职信范文
2014/01/27 职场文书
环保倡议书500字
2014/05/15 职场文书
工商行政管理专业求职书
2014/05/23 职场文书
公共机构节能宣传周活动总结
2014/07/09 职场文书
2014物价局群众路线对照检查材料思想汇报
2014/09/21 职场文书
教你用Java Swing实现自助取款机系统
2021/06/11 Java/Android
vue.js 使用原生js实现轮播图
2022/04/26 Vue.js