Osc*_*alo 7 scroll mobile-safari touch-event touchstart web
我在 iPhone 6 设备上滚动时遇到了这个问题(在 Safari 和 Chrome 上测试):
给定一个可滚动的 div,如果我在 div 已经处于惯性滚动运动时触摸它,滚动运动会按预期停止,但touchstart事件根本不会触发。
当小米Android装置(在Chrome测试)测试的滚动停止与该touchstart事件被触发。
为什么touchstart没有触发?。这是 iPhone 上的标准行为吗?
我已经设置了一个小提琴来测试这种行为:
https://fiddle.jshell.net/galoxia/L63wj9or/
只需做出手势以“激活”蓝色框上的惯性滚动,然后再次触摸以停止它。在 Android 上,您将touchstart在黄色框中看到。在 iPhone 上你不会。
我在尝试在 JavaScript 中为触摸设备实现双击处理程序时遇到了同样的问题。如果 iOS Safari 中发生动量滚动,则在初始事件(启动滚动)touchstart后大约 500 毫秒内不会发送事件。touchstarttouchstart
如果您将 a 放入处理preventDefault()程序中touchstart,则可以解决问题(但会禁用滚动)。根据您的用例,这可能是一个可接受的解决方案。在我看来,两种可能的选择是:
touchstart使用)preventDefault()touchstarttouchstart初始后大约 500 毫秒内不接收事件touchstart我很乐意在这一点上被证明是错误的。如果有一种方法可以在不调用处理程序且不破坏本机滚动的情况下持续获取事件touchstart,请在此处发表评论。preventDefault()touchstart
| 归档时间: |
|
| 查看次数: |
746 次 |
| 最近记录: |