在Chrome浏览器中滚动时Android设备录制错误的pageX / pageY

时间:2014-11-03 21:18:52

标签: android jquery google-chrome touch

在运行Android 4.0.4的三星Galaxy Tab 10.1上测试我的应用程序时,我注意到向下滚动页面后pageY值会变得不正确。

您可以使用此处提供的演示测试此问题: http://api.jquery.com/event.pagey/

看来返回的pageY值实际上是REAL pageY值+ document.body.scrollTop值。

这是使用默认互联网浏览器和Chrome(v38)在Galaxy选项卡上的问题。但是我也使用Firefox进行了测试,根本没有问题。

还有其他人有这个问题吗?我只能使用我能测试的Android设备,是否有人知道这个错误是否已在较新版本的Android中得到修复?

在我正遇到此问题的网页上,我使用“mousemove”事件来设置图表上标记的位置。我使用jquery.ui.touch.js来模拟触摸事件。当“touchmove”发生时,pageY值实际上是正确的,只有当我点击Galaxy Tab上的屏幕时才会返回错误的值。这使得难以修复不正确的pageY值。

1 个答案:

答案 0 :(得分:0)

触摸事件似乎具有andriod的正确pageX / pageY值,因此如果设备是android,我必须运行使用这些触摸事件的单独函数。

这是一个简洁的例子:

if(navigator.userAgent.toLowerCase().indexOf("android") > -1){
   $('html').on("touchstart touchmove touchend", function(e){
       console.log(e.originalEvent.changedTouches[0].pageY);
   });
}else{
   $('html').mousemove(function(e){
       console.log(e.pageY);
   });
}