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 相关文章推荐
Firefox 无法获取cssRules 的解决办法
Oct 11 Javascript
使用jQuery解决IE与FireFox下createElement方法的差异
Nov 14 Javascript
详解页面滚动值scrollTop在FireFox与Chrome浏览器间的兼容问题
Dec 03 Javascript
jQuery EasyUI中DataGird动态生成列的方法
Apr 05 Javascript
关于cookie的初识和运用(js和jq)
Apr 07 Javascript
javascript 动态样式添加的简单实现
Oct 11 Javascript
微信小程序实现图片放大预览功能
Oct 22 Javascript
AngularJS动态添加数据并删除的实例
Feb 27 Javascript
详解微信小程序的不同函数调用的几种方法
May 08 Javascript
json解析大全 双引号、键值对不在一起的情况
Dec 06 Javascript
nuxt.js 在middleware(中间件)中实现路由鉴权操作
Nov 06 Javascript
vue动态设置路由权限的主要思路
Jan 13 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
php的zip解压缩类pclzip使用示例
2014/03/14 PHP
php使用explode()函数将字符串拆分成数组的方法
2015/02/17 PHP
Bootstrap+PHP实现多图上传功能实例详解
2018/04/08 PHP
javascript 日期常用的方法
2009/11/11 Javascript
传智播客学习之JavaScript基础篇
2009/11/13 Javascript
Javascript 异步加载详解(浏览器在javascript的加载方式)
2012/05/20 Javascript
Asp.Net alert弹出提示信息的几种方法总结
2014/01/29 Javascript
利用JQuery和Servlet实现跨域提交请求示例分享
2014/02/12 Javascript
javascript常见数字进制转换实例分析
2016/04/21 Javascript
JavaScript代码实现图片循环滚动效果
2020/03/19 Javascript
js选择器全面解析
2016/06/27 Javascript
详解支持Angular 2的表格控件
2017/01/19 Javascript
提高Web性能的前端优化技巧总结
2017/02/27 Javascript
web.js.字符串与正则表达式操作
2017/05/13 Javascript
jQuery简单实现的HTML页面文本框模糊匹配查询功能完整示例
2018/05/09 jQuery
浅谈Webpack下多环境配置的思路
2018/06/27 Javascript
利用vue重构有赞商城的思路以及总结整理
2019/02/21 Javascript
小程序如何构建骨架屏
2019/05/29 Javascript
angularjs自定义过滤器demo示例
2019/08/24 Javascript
理解生产者消费者模型及在Python编程中的运用实例
2016/06/26 Python
Linux CentOS Python开发环境搭建教程
2018/11/28 Python
python 实现矩阵填充0的例子
2019/11/29 Python
python用pip install时安装失败的一系列问题及解决方法
2020/02/24 Python
Python中的xlrd模块使用原理解析
2020/05/21 Python
解决selenium+Headless Chrome实现不弹出浏览器自动化登录的问题
2021/01/09 Python
CSS3 3D旋转rotate效果实例介绍
2016/05/03 HTML / CSS
银行实习人员自我鉴定
2013/09/22 职场文书
《彩色世界》教学反思
2014/04/12 职场文书
本科毕业生求职信
2014/06/15 职场文书
素质教育标语
2014/06/27 职场文书
护士求职自荐信
2015/03/25 职场文书
2015年七夕情人节活动方案
2015/05/06 职场文书
怎样写家长意见
2015/06/04 职场文书
就业指导讲座心得体会
2016/01/15 职场文书
创业的9条正确思考方式
2019/08/26 职场文书
goland设置颜色和字体的操作
2021/05/05 Golang