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 相关文章推荐
编辑浪子版表单验证类
May 12 Javascript
JavaScript 数组的 uniq 方法
Jan 23 Javascript
jquery判断浏览器类型的代码
Nov 05 Javascript
js onload处理html页面加载之后的事件
Oct 30 Javascript
JS模态窗口返回值兼容问题的完美解决方法
May 28 Javascript
JS实现漂亮的时间选择框效果
Aug 20 Javascript
Angular获取手机验证码实现移动端登录注册功能
May 17 Javascript
jQuery实现拖动效果的实例代码
Jun 25 jQuery
详解用vue编写弹出框组件
Jul 04 Javascript
angular指令笔记ng-options的使用方法
Sep 18 Javascript
JS中的BOM应用
Feb 02 Javascript
面试中canvas绘制图片模糊图片问题处理
Mar 13 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
《雄兵连》《烈阳天道》真的来了
2020/07/13 国漫
社区(php&amp;&amp;mysql)四
2006/10/09 PHP
Php 构造函数construct的前下划线是双的_
2009/12/08 PHP
php5 图片验证码实现代码
2009/12/11 PHP
PHP setcookie指定domain参数后,在IE下设置cookie失效的解决方法
2011/09/09 PHP
PHP 魔术变量和魔术函数详解
2015/02/25 PHP
CodeIgniter配置之database.php用法实例分析
2016/01/20 PHP
Thinkphp自定义代码生成工具及用法说明(附下载地址)
2016/05/27 PHP
PHP7新特性
2021/03/09 PHP
JQuery之focus函数使用介绍
2013/08/20 Javascript
文本框回车提交与禁止提交示例
2013/09/27 Javascript
分享Javascript中最常用的55个经典小技巧
2013/11/29 Javascript
JS通过分析userAgent属性来判断浏览器的类型及版本
2014/03/28 Javascript
微信小程序-小说阅读小程序实例(demo)
2017/01/12 Javascript
Bootstrap风格的zTree右键菜单
2017/02/17 Javascript
JavaScript中在光标处插入添加文本标签节点的详细方法
2017/03/22 Javascript
bootstrap的工具提示实例代码
2017/05/17 Javascript
js实现可以点击收缩或张开的悬浮窗
2017/09/18 Javascript
Vue使用vue-area-linkage实现地址三级联动效果的示例
2018/06/27 Javascript
node.js之基础加密算法模块crypto详解
2018/09/11 Javascript
angular4中引入echarts的方法示例
2019/01/29 Javascript
[02:03]永远的信仰DOTA2 中国军团历届国际邀请赛回顾
2016/06/26 DOTA
python实现的解析crontab配置文件代码
2014/06/30 Python
Python3 main函数使用sys.argv传入多个参数的实现
2019/12/25 Python
python 日志模块 日志等级设置失效的解决方案
2020/05/26 Python
CSS3 绘制BMW logo实的现代码
2013/04/25 HTML / CSS
用HTML5的canvas实现一个炫酷时钟效果
2016/05/20 HTML / CSS
Book Depository美国:全球领先的专业网上书店之一
2019/08/14 全球购物
咖啡店自主创业商业计划书
2014/01/22 职场文书
一年级班主任感言
2014/03/08 职场文书
先进学校事迹材料
2014/12/30 职场文书
商务代表岗位职责
2015/02/15 职场文书
农村环境卫生倡议书
2015/04/29 职场文书
2015年高三教学工作总结
2015/07/21 职场文书
初中语文教学反思范文
2016/03/03 职场文书
Python matplotlib 利用随机函数生成变化图形
2022/04/26 Python