Android chrome pageY值是否随最新的Chrome更新而变化?

Android chrome的最新版本是否破坏了jquery pageY值,还是我完全错过了什么? 特别是从鼠标事件返回的pageX / pageY值。

 $( document ).on( "click", function( event ) { $( "#log" ).text( "pageX: " + event.pageX + ", pageY: " + event.pageY ); });  

http://api.jquery.com/event.pagex/

在Windows Chrome或Android Firefox上,一切看起来都很棒。 点击/hover时此页面上显示的值对于Android chrome来说是错误的。 负数,比预期更大的数字,当它们不应该在缩放/滚动时改变数字等等。我在jsfiddle网站上尝试了几个不同的jquery构建,所有破坏了android chrome。

这是一个小提琴,它改为“点击”而不是“mousemove”:

http://jsfiddle.net/eLvbmqdg/4/

桌面,iphone和android firefox再次按预期工作。 Android chrome 38.0.2125.102似乎非常破碎。

我有生产中的代码,希望pageY准确。 该代码在一段时间内没有改变,突然之间的事情正在破裂。

想法? 还有其他人看到这个吗? 这总是以某种方式破坏?

在此处输入图像描述

我也在Nexus 5上的Chrome for Android版本38.0.2125.102上看到了这一点。我不确定何时引入了这个错误,但它现在正在破坏我们在查找event.pageY值时依赖的代码。

我检查了我的设备,很明显,与桌面相比,报告的event.pageY值是错误的。 同时降级到Android的早期版本的Chrome(32.0.1700.99)报告正确的event.pageY值。

所以这是一个糟糕的黑客。 我讨厌将版本字符串放在浏览器的变通方法中。 我尝试根据您点击的项目的窗口偏移或大小来做一个,但是如果图像足够大,它将无法在100%的时间内工作。 希望这会很快得到解决,但是如果你来这里寻找Android Chrome中这个特定错误的答案,我就是这样做的。

android chrome的未来版本可能会有同样的错误,我们可能需要有一个运行的版本列表。 如果您使用其他破损版本来到此页面,请将其放在下面的评论中。 (另请注意铬问题。)

 var clientY = evt.clientY; var clientX = evt.clientX; var pageX = evt.pageX; var pageY = evt.pageY; if(window.navigator.appVersion.match(/Chrome\/(.*?) /)[1] == "38.0.2125.102"){ //hack to fix the chromium bug //https://code.google.com/p/chromium/issues/detail?id=423802 clientX -= window.scrollX; clientY -= window.scrollY; pageX -= window.scrollX; pageY -= window.scrollY; }