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 相关文章推荐
Mootools 1.2教程 Fx.Morph、Fx选项和Fx事件
Sep 15 Javascript
实例说明为什么不要行内使用javascript
Apr 18 Javascript
jQuery中hide()方法用法实例
Dec 24 Javascript
javascript实现限制上传文件大小
Feb 06 Javascript
Javascript小技能总结(推荐)
Jun 02 Javascript
JS实现运动缓冲效果的封装函数示例
Feb 18 Javascript
vue生命周期和react生命周期对比【推荐】
Sep 19 Javascript
jQuery实现checkbox全选、反选及删除等操作的方法详解
Aug 02 jQuery
vue 实现模糊检索并根据其他字符的首字母顺序排列
Sep 19 Javascript
js实现列表按字母排序
Aug 11 Javascript
详解CocosCreator消息分发机制
Apr 16 Javascript
vue里使用create, mounted调用方法
Apr 26 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
日本十大科幻动漫 宇宙骑士垫底,第一已成经典
2020/03/04 日漫
一些PHP Coding Tips(php小技巧)[2011/04/02最后更新]
2011/05/02 PHP
zf框架的数据库追踪器使用示例
2014/03/13 PHP
浅析php中json_encode()和json_decode()
2014/05/25 PHP
php实现的常见排序算法汇总
2014/09/08 PHP
thinkPHP3.x常量整理(预定义常量/路径常量/系统常量)
2016/05/20 PHP
php实现产品加入购物车功能(1)
2020/07/23 PHP
关于laravel框架中的常用目录路径函数
2019/10/23 PHP
js 调整select 位置的函数
2008/02/21 Javascript
JavaScript 调试器简介
2009/02/21 Javascript
用JQuery在网页中实现分隔条功能的代码
2012/08/09 Javascript
js获取dom的高度和宽度(可见区域及部分等等)
2013/06/13 Javascript
子窗体与父窗体传值示例js代码
2013/08/01 Javascript
JS获取浏览器语言动态加载JS文件示例代码
2014/10/31 Javascript
将页面table内容与样式另存成excel文件的方法
2015/08/05 Javascript
JS实现表单中checkbox对勾选中增加边框显示效果
2015/08/21 Javascript
使用jQuery的load方法设计动态加载及解决被加载页面js失效问题
2017/03/01 Javascript
json的结构与遍历方法实例分析
2017/04/25 Javascript
Angular使用Md5加密的解决方法
2017/09/16 Javascript
基于BootStrap的文本编辑器组件Summernote
2017/10/27 Javascript
使用vue-cli打包过程中的步骤以及问题的解决
2018/05/08 Javascript
JS温故而知新之变量提升和时间死区
2019/01/27 Javascript
create-react-app中添加less支持的实现
2019/11/15 Javascript
Python字符串处理函数简明总结
2015/04/13 Python
Windows下的Python 3.6.1的下载与安装图文详解(适合32位和64位)
2018/02/21 Python
Python2 Selenium元素定位的实现(8种)
2019/02/25 Python
GitHub 热门:Python 算法大全,Star 超过 2 万
2019/04/29 Python
python tkinter实现彩球碰撞屏保
2019/07/30 Python
python tkinter图形界面代码统计工具(更新)
2019/09/18 Python
Python虚拟环境venv用法详解
2020/05/25 Python
Python定时任务APScheduler原理及实例解析
2020/05/30 Python
在keras里实现自定义上采样层
2020/06/28 Python
离婚协议书范文2014
2014/10/16 职场文书
质量承诺书格式范文
2015/04/28 职场文书
结婚幸福感言
2015/08/01 职场文书
Nginx使用Lua模块实现WAF的原理解析
2021/09/04 Servers