Sim*_*ris 25 javascript android google-chrome touch dom-events
在Android版Chrome版本16和18(至少)有一个错误,报告clientX和clientY不正确.如果页面滚动,clientX/Y则至少该touchstart事件的值将不正确,但不是click事件.这里有一个错误:
https://code.google.com/p/chromium/issues/detail?id=117754
其中包含此示例,您可以自己尝试:http://www.apprisant.com/tab/cd.html
我在这里用canvas做了一个类似的例子:http://codepen.io/simonsarris/full/dJcvn
这些示例适用于其他移动浏览器(包括普通的旧版Android浏览器),但Chrome for Android似乎在滚动时打破了clientX/Y(至少某些)触摸事件.
有趣的是,clientX和clientY并没有click像它们一样打破事件touchstart.
我的问题是,使clientX和clientY在浏览器中一致地工作的最佳解决方法是什么?看来,以抵消window.scrollX和window.scrollY将"解决"的问题,而是一个很好的解决办法需要:
clientX和clientY?window.scrollX/Y是唯一需要在这里完成的事情.Ran*_*all 14
只需用e.pageY - window.scrollY它代替e.clientY(或X相应).
e.pageY将为您提供事件发生的位置,并通过window.scrollY"删除由于滚动而在屏幕外的空白空间"进行抵消.您可以有条件地检查e.pageY - window.scrollY === e.clientY,但由于变通方法为您提供了正确的值,并且您必须计算它以进行检查,这将是违反直觉的.
| 归档时间: |
|
| 查看次数: |
4700 次 |
| 最近记录: |