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 相关文章推荐
JavaScript Array扩展实现代码
Oct 14 Javascript
js data日期初始化的5种方法
Dec 29 Javascript
jQuery1.9.1针对checkbox的调整方法(prop)
May 01 Javascript
自己封装的常用javascript函数分享
Jan 07 Javascript
详解js跨域原理以及2种解决方案
Dec 09 Javascript
JavaScript判断数组重复内容的两种方法(推荐)
Jun 06 Javascript
详解基于angular路由的requireJs按需加载js
Jan 20 Javascript
js常用DOM方法详解
Feb 04 Javascript
vue里面父组件修改子组件样式的方法
Feb 03 Javascript
Vue二次封装axios为插件使用详解
May 21 Javascript
微信小程序使用Vant Weapp组件库的方法步骤
Aug 01 Javascript
在layui中layer弹出层点击事件无效的解决方法
Sep 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
解析php中mysql_connect与mysql_pconncet的区别详解
2013/05/15 PHP
php接口和抽象类使用示例详解
2014/03/02 PHP
php命令行用法入门实例教程
2014/10/27 PHP
php curl登陆qq后获取用户信息时证书错误
2015/02/03 PHP
PHP判断json格式是否正确的实现代码
2017/09/20 PHP
浅谈PHP匿名函数和闭包
2019/03/08 PHP
ExtJS 2.0实用简明教程 之Ext类库简介
2009/04/29 Javascript
JavaScript与DropDownList 区别分析
2010/01/01 Javascript
FileUpload 控件 禁止手动输入或粘贴的实现代码
2010/04/07 Javascript
javascript中的缓动效果实现程序
2012/12/29 Javascript
jQuery如何实现点击页面获得当前点击元素的id或其他信息
2014/01/09 Javascript
JavaScript整除运算函数ceil和floor的区别分析
2015/04/14 Javascript
Bootstrap 最常用的JS插件系列总结(图片轮播、标签切换等)
2016/07/14 Javascript
Chrome浏览器的alert弹窗禁止再次弹出后恢复的方法
2016/12/30 Javascript
canvas实现流星雨的背景效果
2017/01/13 Javascript
servlet+jquery实现文件上传进度条示例代码
2017/01/25 Javascript
jQuery按需加载轮播图(web前端性能优化)
2017/02/17 Javascript
Angularjs中date过滤器失效的问题及解决方法
2018/07/06 Javascript
详解nuxt 微信公众号支付遇到的问题与解决
2019/08/26 Javascript
[00:21]DOTA2亚洲邀请赛 Logo演绎
2015/02/07 DOTA
python使用post提交数据到远程url的方法
2015/04/29 Python
Python使用MONGODB入门实例
2015/05/11 Python
python下MySQLdb用法实例分析
2015/06/08 Python
Python中有趣在__call__函数
2015/06/21 Python
Python3实现计算两个数组的交集算法示例
2019/04/03 Python
Django之编辑时根据条件跳转回原页面的方法
2019/08/21 Python
利用python实现AR教程
2019/11/20 Python
python随机生成库faker库api实例详解
2019/11/28 Python
python中取绝对值简单方法总结
2020/07/24 Python
软件测试工程师结构化面试题库
2016/11/23 面试题
销售经理竞聘书
2014/03/31 职场文书
护士节演讲稿开场白
2014/08/25 职场文书
2014年教师节讲话稿5篇
2014/09/10 职场文书
《悲惨世界》:比天空更广阔的是人的心灵
2020/01/16 职场文书
jQuery实现影院选座订座效果
2021/04/13 jQuery
一文彻底理解js原生语法prototype,__proto__和constructor
2021/10/24 Javascript