如何在移动设备/iPad 上获取 e.offsetX

How can I get e.offsetX on mobile/iPad

本文关键字:iPad 获取 offsetX 移动      更新时间:2023-09-26

当我在iPad上尝试时,e.touches[0]中没有offsetX。有谁知道我在哪里可以获得偏移量X的值?

基于建议答案中的注释的正确答案:

e.offsetX = e.touches[0].pageX - e.touches[0].target.offsetLeft;     
e.offsetY = e.touches[0].pageY - e.touches[0].target.offsetTop;

这将忽略任何转换,例如旋转或缩放。另外,请务必检查是否有任何触摸。

您可以使用clientX或pageX,请参阅此处

谢谢,@Kontiki - 这是最终为我解决问题的解决方案:

if("touchmove" == e.type)
{
    let r = canvas.getBoundingClientRect();
    currX = e.touches[0].clientX - r.left;
    currY = e.touches[0].clientY - r.top;
}
else
{
    currX = e.offsetX;
    currY = e.offsetY;
}

页面 - 偏移量/客户端方法对我不起作用。仍然有偏移。我发现另一个解决方案可以完美运行:

let r = canvas.getBoundingClientRect();
let x = e.touches[0].pageX - r.left;
let y = e.touches[0].pageY - r.top;
在元素

上使用 jQuery 的 .on 函数绑定事件处理程序时遇到了类似的问题canvas(不知道原因)。

我通过使用 addEventListener 绑定事件处理程序来解决它。处理程序中的 event 对象具有使用正确值定义的 offsetX 和 offsetY。

希望对你有帮助...