javascript - 未捕获的类型错误 : Cannot read property 'pageX' of undefined

标签 javascript android jquery cordova touchstart

我正在修改 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);
}
}

如果我在 touchmove 中删除 if 中的注释,坐标弹出。但是,如果它被评论,我的 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);

应该可以解决问题。

关于javascript - 未捕获的类型错误 : Cannot read property 'pageX' of undefined,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23625782/

相关文章:

javascript - 使用 Javascript 计算并显示文本框中的字符数

javascript - Node.js:如何防止同时调用异步函数

java - 修复 Firebase 实时数据库问题

java - 无法在 Android 中使用 BroadcastReceiver 上下文初始化接口(interface)

android - 带有 singleTop 的广播接收器 startActivity

jQuery + CSS。如何计算innerHTML 的高度和宽度?

javascript - 达到 maxlength 值后聚焦下一个输入

Javascript 用 dom 对象的值替换字符串

javascript - 类型错误 : Cannot read property 'id' of undefined & bad variable log

javascript - 如何在 JavaScript 和 NodeJS WebSocket 之间进行 Ping/Pong?