我在js中修改touchevents。我在Eclipse中的logcat中遇到了此错误。

document.getElementById("squareBracket").
    addEventListener("touchmove", touchHandler, false);
document.getElementById("squareBracket").
    addEventListener("touchend", touchHandler, false);

function touchHandler(e) {
 if (e.type == "touchstart") {
 alert("You touched the screen!");
  } else if (e.type == "touchmove") {
 // alert(e.changedTouches[0].pageX);
 // alert(e.changedTouches[0].pageY);
 } else if (e.type == "touchend" || e.type == "touchcancel") {
  alert('X :' + e.targetTouches[0].pageX);
  alert('Y :' + e.targetTouches[0].pageY);
}
}

如果我删除iftouchmove中的注释,则弹出坐标。但是,如果有评论,则会显示我的logcat中的错误。

最佳答案

您应该在这里开始了解targetTouches,changedTouches和touches的区别:Variation of e.touches, e.targetTouches and e.changedTouches

对于您而言,在touchend或touchcancel时刻,targetTouches列表为空,并且信息保留在changedTouches中。

将您的代码更改为:

alert('X :' + e.changedTouches[0].pageX);
alert('Y :' + e.changedTouches[0].pageY);

应该可以。

10-07 13:44