想在touchmove事件里监听手指按下的坐标,event.pageX获取的是undefined,changedTouches,targetTouches,touches也只获得到了鼠标按下时的坐标,没法持续监听,求帮助!或者其他办法也行,效果大概是一个元素,手指在上面滑动,然后改变这个元素的top之类的,这个改变是在手指滑动的过程中变化的。
提问者采纳
//禁用手机默认的触屏滚动行为document.addEventListener('touchmove', function(event) { event.preventDefault();}, false);//touchstart事件function touchSatrtFunc(evt) { try { //evt.preventDefault(); //阻止触摸时浏览器的缩放、滚动条滚动等 var touch = evt.touches[0]; //获取第一个触点 var x = Number(touch.pageX); //页面触点X坐标 var y = Number(touch.pageY); //页面触点Y坐标 //记录触点初始位置 startX = x; startY = y; } catch (e) { alert('touchSatrtFunc:' + e.message); }}//touchmove事件,这个事件无法获取坐标function touchMoveFunc(evt) { try { //evt.preventDefault(); //阻止触摸时浏览器的缩放、滚动条滚动等 var touch = evt.touches[0]; //获取第一个触点 var x = Number(touch.pageX); //页面触点X坐标 var y = Number(touch.pageY); //页面触点Y坐标//document.getElementById("version").innerHTML = "原:"+startY+" "+"现:"+y; //判断滑动方向 上下 if (y - startY > 100) { swipeDown();//你自己的方法 我是用来翻页的一样的 } else if(y - startY < -100){ swipeUp();//你自己的方法 } } catch (e) { alert('touchMoveFunc:' + e.message); }}//touchend事件function touchEndFunc(evt) { try { //evt.preventDefault(); //阻止触摸时浏览器的缩放、滚动条滚动等 } catch (e) { alert('touchEndFunc:' + e.message); }}//绑定事件function bindEvent() { document.addEventListener('touchstart', touchSatrtFunc, false); document.addEventListener('touchmove', touchMoveFunc, false); document.addEventListener('touchend', touchEndFunc, false);}//判断是否支持触摸事件function isTouchDevice() { //document.getElementById("version").innerHTML = navigator.appVersion; try { document.createEvent("TouchEvent"); //alert("支持TouchEvent事件!"); bindEvent(); //绑定事件 } catch (e) { alert("不支持TouchEvent事件!" + e.message); }}
追问
touchmove事件无法获取坐标那怎么持续监听?
回答
可以啊,你可以输出到页面上看看,我做的是滑动翻页,所以是一段距离.
- 提问者评价
-
谢谢!