【问题标题】:Did Android chrome pageY value change with the latest chrome update?Android chrome pageY 值是否随着最新的 chrome 更新而改变?
【发布时间】:2014-10-14 19:32:08
【问题描述】:

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

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

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

在 Windows Chrome 或 Android Firefox 上一切看起来都很棒。点击/悬停时此页面上显示的值对于 android chrome 来说是错误的。负数、大于预期的数字、缩放/滚动时不应该发生的数字变化等。我在 jsfiddle 网站上尝试了几种不同的 jquery 版本,对于 android chrome 来说都坏了。

这是一个把它改成“点击”而不是“鼠标移动”的小提琴:

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

桌面、iphone 和 android firefox 再次按预期工作。 Android chrome 38.0.2125.102 好像很破。

我的生产中的代码期望 pageY 是...准确的。这段代码已经有一段时间没有改变了,突然间事情就坏了。

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

【问题讨论】:

标签: javascript android jquery google-chrome


【解决方案1】:

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

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

【讨论】:

  • 可能会把你的 .02c 钉在我的铬虫上。
  • 刚刚添加!感谢您提交。
【解决方案2】:

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

android chrome 的未来版本可能存在同样的错误,我们可能需要一个运行中的已损坏版本列表。如果您以不同的损坏版本来到此页面,请将其放在下面的 cmets 中。 (也请支持铬问题。)

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;
}

【讨论】:

    猜你喜欢
    • 2021-07-04
    • 2023-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-30
    • 1970-01-01
    相关资源
    最近更新 更多