如何在手机/ iPad上获得e.offsetX

时间:2012-07-02 04:43:05

标签: javascript ipad events

当我在iPad上试用时,e.touches [0]中没有offsetX。有谁知道我在哪里可以获得offsetX的这个值?

5 个答案:

答案 0 :(得分:15)

基于建议答案中的评论的正确答案:

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

这会忽略任何转换,例如旋转或缩放。另外一定要检查是否有任何接触。

答案 1 :(得分:10)

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

答案 2 :(得分:1)

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

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

希望它有所帮助...

答案 3 :(得分:0)

页面-偏移量/客户端方法对我不起作用。仍然有抵消。我找到了另一个效果很好的解决方案:

let r = canvas.getBoundingClientRect();

let x = e.touches[0].pageX - r.left;
let y = e.touches[0].pageY - r.top;

答案 4 :(得分:0)

谢谢@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;
}