当我在 iPad 上尝试时,e.touches[0] 中没有 offsetX。有谁知道我在哪里可以得到这个 offsetX 的值?
问问题
9040 次
5 回答
18
基于建议答案中的评论的正确答案:
e.offsetX = e.touches[0].pageX - e.touches[0].target.offsetLeft;
e.offsetY = e.touches[0].pageY - e.touches[0].target.offsetTop;
这会忽略任何转换,例如旋转或缩放。还要确保检查是否有任何接触。
于 2016-09-12T10:18:44.707 回答
10
您可以使用 clientX 或 pageX,请参见此处
于 2012-07-02T05:26:13.970 回答
3
谢谢,@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;
}
于 2019-12-19T14:32:07.977 回答
2
页面 - 偏移量/客户端方法对我不起作用。仍然有一个偏移量。我发现另一个完美的解决方案:
let r = canvas.getBoundingClientRect();
let x = e.touches[0].pageX - r.left;
let y = e.touches[0].pageY - r.top;
于 2019-06-02T14:00:31.577 回答
1
在元素上使用 jQuery 的.on
函数绑定事件处理程序时遇到了类似的问题canvas
(不知道原因)。
我通过使用绑定事件处理程序解决了它addEventListener
。处理程序中的event
对象具有使用适当值定义的 offsetX 和 offsetY。
希望能帮助到你...
于 2014-06-06T09:58:22.070 回答