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 相关文章推荐
网页自动刷新,不产生嗒嗒声的一个解决方法
Mar 27 Javascript
JavaScript获取页面上某个元素的代码
Mar 13 Javascript
基于JQuery 的消息提示框效果代码
Jul 31 Javascript
jquery 插件实现瀑布流图片展示实例
Apr 03 Javascript
JavaScript知识点总结(五)之Javascript中两个等于号(==)和三个等于号(===)的区别
May 31 Javascript
AngularJS基础 ng-readonly 指令简单示例
Aug 02 Javascript
JavaScript设计模式之工厂模式和抽象工厂模式定义与用法分析
Jul 26 Javascript
vue如何安装使用Quill富文本编辑器
Sep 21 Javascript
新手入门带你学习JavaScript引擎运行原理
Jun 24 Javascript
javascript使用链接跨域下载图片
Nov 01 Javascript
Vue快速实现通用表单验证的方法
Feb 24 Javascript
vue 微信分享回调iOS和安卓回调出现错误的解决
Sep 07 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
2021年最新CPU天梯图
2021/03/04 数码科技
关于扩展 Laravel 默认 Session 中间件导致的 Session 写入失效问题分析
2016/01/08 PHP
PHP中的自动加载操作实现方法详解
2019/08/06 PHP
如何在PHP环境中使用ProtoBuf数据格式
2020/06/19 PHP
PHP tp5中使用原生sql查询代码实例
2020/10/28 PHP
几个比较实用的JavaScript 测试及效验工具
2010/04/18 Javascript
从URL中提取参数与将对象转换为URL查询参数的实现代码
2012/01/12 Javascript
JavaScript基本编码模式小结
2012/05/23 Javascript
jquery跟js初始化加载的多种方法及区别介绍
2014/04/02 Javascript
原生js实现淘宝首页点击按钮缓慢回到顶部效果
2014/04/06 Javascript
javascript数组操作(创建、元素删除、数组的拷贝)
2014/04/07 Javascript
JavaScript字符串对象fromCharCode方法入门实例(用于把Unicode值转换为字符串)
2014/10/17 Javascript
javascript笛卡尔积算法实现方法
2015/04/08 Javascript
跟我学习javascript的定时器
2015/11/19 Javascript
js生成随机数的过程解析
2015/11/24 Javascript
基于JS判断iframe是否加载成功的方法(多种浏览器)
2016/05/13 Javascript
JS for...in 遍历语句用法实例分析
2016/08/24 Javascript
BootStrap 超链接变按钮的实现方法
2016/09/25 Javascript
基于jQuery实现火焰灯效果导航菜单
2017/01/04 Javascript
微信小程序 setData使用方法及常用错误解决办法
2017/05/11 Javascript
vue项目中全局引入1个.scss文件的问题解决
2019/08/01 Javascript
JS 设计模式之:单例模式定义与实现方法浅析
2020/05/06 Javascript
[16:56]heroes英雄教学 司夜刺客
2014/09/18 DOTA
[01:04:06]DOTA2上海特级锦标赛A组资格赛#2 Secret VS EHOME第一局
2016/02/26 DOTA
numpy使用技巧之数组过滤实例代码
2018/02/03 Python
Python3实现爬取指定百度贴吧页面并保存页面数据生成本地文档的方法
2018/04/22 Python
Tensorflow中的placeholder和feed_dict的使用
2018/07/09 Python
安装Pycharm2019以及配置anconda教程的方法步骤
2019/11/11 Python
pytorch 状态字典:state_dict使用详解
2020/01/17 Python
Python+Django+MySQL实现基于Web版的增删改查的示例代码
2020/05/13 Python
python如何求100以内的素数
2020/05/27 Python
EJB与JAVA BEAN的区别
2016/08/29 面试题
项目计划书范文
2014/01/09 职场文书
护士见习期自我鉴定
2014/02/08 职场文书
汽车广告策划方案
2014/05/31 职场文书
快消品行业营销模式与盈利模式分享
2019/09/27 职场文书