JS Touch事件:Y坐标大于窗口高度

时间:2014-09-12 15:06:39

标签: javascript jquery ios scroll touch

我正在尝试了解有关触摸事件的更多信息,特别是在iOS 7中进行测试。我已经将我的工作分解为演示我遇到的问题:

(笔不再可用)

窗口高度是在页面加载时测量的,并显示在“高度统计”中。所以,我的想法是最大pageY值将等于窗口高度。但是,当我滚动页面并启动新触摸时,pageY坐标反映整个文档的像素距离,而不是窗口“框架”。

这似乎导致报告的值不正确。当您继续在窗口上下移动手指时,moveY将卡在大约10px的范围内(startY = 374,moveY保持在366和376之间)。我不确定为什么会发生这种情况......但更大的问题是为什么pageY不限于窗框?

以下是仅显示触摸事件捕获的片段:

var startY, moveY;

$(window).on('touchstart', function(e) {
    startY = e.originalEvent.targetTouches[0].pageY;
});

$(window).on('touchmove', function(e) {
    moveY = e.originalEvent.targetTouches[0].pageY;
});

$(window).on('touchend', function(e) {
    endY = moveY;
});

1 个答案:

答案 0 :(得分:1)

经过多次挖掘,我发现不仅仅是页面坐标对象。我们还有屏幕客户端。从测试来看,我无法区分屏幕页面之间的任何区别,但客户端似乎能够完全告诉我我的目标。例如:

e.originalEvent.targetTouches[0].clientY;

...将始终给出窗框的坐标,而不是文档高度。成功了!