移动端JS 触摸事件基础

摘要:
=-1)func();},假);Obj.addEventListener(“touchmove”,function(){event.prpreventDefault();//在触摸init.ex=event.targetTouches[0].pageX;init.ey=event.targetTouches[0]/pageY;if(type.indexOf(“move”)!=-1)func();}}否则if{eTime=newDate().getTime();//单击事件以根据时间差细分if{if(type.indexOf(“long”)!

一、手机上的触摸事件

 
基本事件:
 
touchstart   //手指刚接触屏幕时触发
touchmove    //手指在屏幕上移动时触发
touchend     //手指从屏幕上移开时触发
 
下面这个比较少用:
touchcancel  //触摸过程被系统取消时触发
每个事件都有以下列表,比如touchend的targetTouches当然是 0 咯:
 
touches         //位于屏幕上的所有手指的列表
targetTouches   //位于该元素上的所有手指的列表
changedTouches  //涉及当前事件的所有手指的列表
每个事件有列表,每个列表还有以下属性:
 
复制代码
其中坐标常用pageX,pageY:
pageX    //相对于页面的 X 坐标
pageY    //相对于页面的 Y 坐标
clientX  //相对于视区的 X 坐标
clientY  //相对于视区的 Y 坐标
screenX  //相对于屏幕的 X 坐标
screenY  //相对于屏幕的 Y 坐标
 
identifier // 当前触摸点的惟一编号
target   //手指所触摸的 DOM 元素
复制代码
其他相关事件:
 
event.preventDefault()   //阻止触摸时浏览器的缩放、滚动条滚动
var supportTouch = "createTouch" in document  //判断是否支持触摸事件
更多深入内容?点击:http://www.cesclub.com/bw/jishuzhongxin/Webjishu/2011/1216/18069.html
 
 
 
二、示例
 
以下是获取不同类型滑动的代码具体做法,结合前人的思想,封装好了,可以借鉴学习:
 
复制代码
var touchFunc = function(obj,type,func) {
    //滑动范围在5x5内则做点击处理,s是开始,e是结束
    var init = {x:5,y:5,sx:0,sy:0,ex:0,ey:0};
    var sTime = 0, eTime = 0;
    type = type.toLowerCase();
 
    obj.addEventListener("touchstart",function(){
        sTime = new Date().getTime();
        init.sx = event.targetTouches[0].pageX;
        init.sy = event.targetTouches[0].pageY;
        init.ex = init.sx;
        init.ey = init.sy;
        if(type.indexOf("start") != -1) func();
    }, false);
 
    obj.addEventListener("touchmove",function() {
        event.preventDefault();//阻止触摸时浏览器的缩放、滚动条滚动
        init.ex = event.targetTouches[0].pageX;
        init.ey = event.targetTouches[0].pageY;
        if(type.indexOf("move")!=-1) func();
    }, false);
 
    obj.addEventListener("touchend",function() {
        var changeX = init.sx - init.ex;
        var changeY = init.sy - init.ey;
        if(Math.abs(changeX)>Math.abs(changeY)&&Math.abs(changeY)>init.y) {
            //左右事件
            if(changeX > 0) {
                if(type.indexOf("left")!=-1) func();
            }else{
                if(type.indexOf("right")!=-1) func();
            }
        }
        else if(Math.abs(changeY)>Math.abs(changeX)&&Math.abs(changeX)>init.x){
            //上下事件
            if(changeY > 0) {
                if(type.indexOf("top")!=-1) func();
            }else{
                if(type.indexOf("down")!=-1) func();
            }
        }
        else if(Math.abs(changeX)<init.x && Math.abs(changeY)<init.y){
            eTime = new Date().getTime();
            //点击事件,此处根据时间差细分下
            if((eTime - sTime) > 300) {
                if(type.indexOf("long")!=-1) func(); //长按
            }
            else {
                if(type.indexOf("click")!=-1) func(); //当点击处理
            }
        }
        if(type.indexOf("end")!=-1) func();
    }, false);
};

免责声明:文章转载自《移动端JS 触摸事件基础》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇[转]Putty中文乱码解决方法IIS 7 应用程序池自动回收关闭的解决方案下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

libevent编程疑难解答

http://blog.csdn.net/luotuo44/article/details/39547391 转载请注明出处:http://blog.csdn.net/luotuo44/article/details/39547391 正常情况下应该在libevent的回调中调用event_add函数, 如果想下其他的线程中调用event_add,是线程不...

JS去除对象或数组中的空值('',null,undefined,[],{})

javascript去掉对象或数组中的'',null,undefined,[],{}。思路就是创建一个新的空对象,然后对传入的对象进行遍历,只把符合条件的属性返回,保留有效值,然后就相当于把空值去掉了。(可以根据注释来修改方法决定要去除哪些属性) function removeEmptyField(obj) { var newObj = {} if...

js中如何通过身份证号计算出生日期和年龄

在html中有如下标签 身份证号:<input type="text" id="Gra_IDCard" onChange="IDCardChange()"/> <br/> 出生日期:<input type="date" id="Gra_BirthDate"/> <br/> 用...

js截取指定长度字符

Code/// <summary> /// 截取指定长度的(中英文)字符 /// </summary>function curStr(str,length) {     var position=0;     var result=[];     for (var i = 0; i < str.length; i++)   ...

JS异步编程

1.1 什么是异步 异步(async)是相对于同步(sync)而言的,很好理解。 同步就是一件事一件事的执行。只有前一个任务执行完毕,才能执行后一个任务。而异步是不用等待前一个任务执行完成也能够执行 比如: setTimeout(function(){ console.log(1); }, 1000); console.log(2);// 2...

php解码js使用escape转码的函数

/** * 功能和js unescape函数,解码经过escape编码过的数据 * @param $str */ function unescape($str) { $ret = ''; $len = strlen($str); for ($i = 0; $i < $len; $i ++) {...