gpt4 book ai didi

web - 如果已经滚动(在 iPhone 上),则不会在可滚动 div 上触发 touchstart 事件

转载 作者:行者123 更新时间:2023-12-01 05:41:08 24 4
gpt4 key购买 nike

我在 iPhone 6 设备上滚动时遇到了这个问题(在 Safari 和 Chrome 上测试):

给定一个可滚动的 div,如果我在 div 已经处于惯性滚动运动时触摸它,滚动运动会按预期停止,但 touchstart事件根本不会触发。

在小米 Android 设备上测试时(在 Chrome 上测试)滚动停止 touchstart事件被触发。

为什么是 touchstart没有触发?。这是 iPhone 上的标准行为吗?

我已经设置了一个 fiddle 来测试这种行为:

https://fiddle.jshell.net/galoxia/L63wj9or/

只需做出手势以“激活”蓝色框上的惯性滚动,然后再次触摸以停止它。在 Android 上你会看到 touchstart在黄色框中。在 iPhone 上你不会。

最佳答案

我在尝试在 JavaScript 中为触摸设备实现双击处理程序时遇到了同样的问题。如果 iOS Safari 中发生动量滚动,则 touchstart在初始 touchstart 之后大约 500 毫秒内不会发送事件(启动滚动的 touchstart)。
如果您输入 preventDefault()touchstart处理程序,然后这解决了问题(但禁用滚动)。根据您的用例,这可能是一个可接受的解决方案。在我看来,两种可能的选择是:

  • 禁用“通过触摸 native 滚动”并接收所有 touchstart事件(在 preventDefault() 处理程序中使用 touchstart)
  • 启用“通过触摸 native 滚动”但未收到 touchstart初始 touchstart 后大约 500 毫秒的事件在卷轴中

  • 我很想在这方面被证明是错误的。如果有办法始终如一地获得 touchstart无需调用的事件 preventDefault()touchstart处理程序并且在不破坏 native 滚动的情况下,请在此处发表评论。

    关于web - 如果已经滚动(在 iPhone 上),则不会在可滚动 div 上触发 touchstart 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49468413/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com