未捕获的TypeError:无法读取未定义的属性“pageX”

时间:2014-05-13 08:01:32

标签: javascript android jquery cordova touchstart

我在js中修补touchevents。我在日食中的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中的错误。

1 个答案:

答案 0 :(得分:4)

您应该在这里开始了解targetTouches,changedTouches和touch的区别: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);

应该这样做。