如何获取touchstart事件相对于移动设备窗口的坐标?

时间:2012-09-12 06:34:10

标签: jquery ios ios5 mobile cordova

这是我的JavaScript:

$("window").bind("touchstart", function ()
    {
        var org = e.originalEvent.touches[0]; 
        var x = orig.changedTouches[0].pageX;//relative position of html,body document
        var y = orig.changedTouches[0].pageY;//relative position of html,body document

        var x0 = x - window.scrollX;
        var y0 = y - window.scrollY;

        alert(x0);
        alert(y0);
    });

xy适用于相对于HTML body元素的坐标,所以目前, 我需要偏移window.scrollXwindow.scrollY;

我的问题是在滚动过程中,用户经常触摸设备,使x0和y0以实时方式不正确。

我尝试使用position:fixed添加全屏透明叠加div元素,并获取相对于该坐标的坐标:

 $("overlayDIV").bind("touchstart",..

然而,结果是一样的。

无论如何在移动设备窗口上获取touchstart事件的绝对坐标?

我的环境是iOS 5.x + phoneGap / Cordova2.0 + jQuery1.8.8。

EDIT1

我已经为touchstart事件尝试了$(window)。问题是jQuery元素是什么,例如$(window)或全屏透明层,结果是相对于html,body的坐标。

EDIT2

根据 http://api.jquery.com/category/events/event-object/

event.pageX
The mouse position relative to the left edge of the document.
event.pageY
The mouse position relative to the top edge of the document.

只要我们使用pageX属性,返回将始终是文档的相对位置。它可能听起来不错,但问题是它实际上是 html,body document 的相对位置。

0 个答案:

没有答案