可以't在Android设备上的Javascript中获取触摸事件的坐标

Can't get coordinates of touchevents in Javascript on Android devices

本文关键字:Javascript 获取 触摸 坐标 事件 Android 可以      更新时间:2023-09-26

我正在测试HTML5画布,并使用Javascript为支持触摸的设备绘制。虽然我在iOS设备上使用它,但我无法在Android上使用它。我已经将其缩小到event.pageX,不返回坐标,而是返回0或未定义(基于浏览器)。

我已经在Opera Mobile和Dolphin浏览器中运行Cyanogen 7.1的手机上测试了它,也在运行标准浏览器的Galaxy Tab 10.1(Android 3.1)上测试了。

我修改了代码,在触摸启动事件上显示警报,显示event.pageX、event.layerX和event.clientX坐标(我知道clientX应该只在iOS上工作)。

canvas.addEventListener('touchstart', function(e) {
if (readyToDraw){
    alert("PageX: "+e.pageX+","+e.pageY+"'n LayerX: "+e.layerX+","+e.layerY+"'n + clientX: "+e.clientX+","+e.clientY);
    // prevent the browsers default action!
    e.preventDefault();
    paint = true;
    // Get coordinates
    var c = getCoords(e);
    addClick(c.x, c.y, false);
}
});

我已经在iOS中完成了完整的绘图,但甚至无法让Android注册坐标,有什么想法吗?

最终编辑:我解决了这个问题,看到了公认的答案。

最终编辑:好的,我已经完成了,如果有人发现了这个问题,并且有类似的问题,你需要访问事件中的触摸阵列,如果只是使用单点触摸(而不是多点触摸)从阵列中取出第一个项目,如下所示,或者如果不准确,你可能需要偏移它:

var touch = event.touches[0];
var x = touch.pageX;
var y = touch.pageY;
// or taking offset into consideration
var x_2 = touch.pageX - canvas.offsetLeft;
var y_2 = touch.pageY - canvas.offsetTop;

对我不起作用(在iScroll 5上下文中)。使用changedTouches[0],如鼠标点击事件中所建议的。pagex是移动chrome浏览器(v30.0.1599.92)中的NaN。