在运行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值。
答案 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);
});
}