标签: pagey

jQuery(Swipe vs. Touch)pageX和pageY一直返回0

我在iPhone上玩touchstart和touchend事件.我构建了一个具有div的示例页面,如果您触摸它并滚动页面,它应该返回开始和结束位置的y坐标.

链接:http://jsbin.com/ibemom/2

jQuery:

var touchStartPos;

$('.theDiv')
  .bind('touchstart', function(e){
    touchStartPos = e.pageY;
  })
  .bind('touchend', function(e){
    alert(touchStartPos + ' | ' + e.pageY)
  })   
Run Code Online (Sandbox Code Playgroud)

但是,当我在iPhone上加载该页面时,警报会将两个值都报告为零.有人看到我有什么问题吗?

更新:

我偶然发现了jQuery Mobile项目中的这段代码:https://github.com/jquery/jquery-mobile/issues/734

它的评论突出:

 // (in iOS event.pageX and event.pageY are always 0 )
Run Code Online (Sandbox Code Playgroud)

它没有说明为什么会这样,但至少我发现其他人看到了同样的事情.将挖掘该页面上的示例代码以查看解决方案是否存在.

更新II:

好吧,在查看上面链接中的示例代码后,看起来这将返回一个实际值:

e.originalEvent.touches[0].pageY
Run Code Online (Sandbox Code Playgroud)

问题是,我现在意识到这不是我需要的.它将我附加事件的对象触摸区域的Y偏移返回到与HTML文档相关的...而不是浏览器窗口.

我的目标是弄清楚触摸开始的位置和结束位置......然后比较值.如果它们有点不同,那么我们就会进行滑动...而不是触摸.

更新III:

我也找到了这些例子的参考:

e.originalEvent.touches[0].pageX

event.targetTouches[0].pageY
Run Code Online (Sandbox Code Playgroud)

虽然我似乎无法让那些工作.两者都返回未定义的错误.

更新IV:

看起来一种解决方案是跟踪文档本身的offset().我可以将touchend事件应用于文档,然后检查它的偏移量.

这个问题是我的touchend事件将首先触发我页面上的元素,然后它会在文档上触发它(冒泡).因此,在我需要弄清楚如何对象touchend事件之前,我无法确定它是触摸还是滑动.

还在思考这一个......

jquery touch-event swipe-gesture pagey

18
推荐指数
1
解决办法
3万
查看次数

标签 统计

jquery ×1

pagey ×1

swipe-gesture ×1

touch-event ×1