2

在 Safari 10 上,通过定义一个简单的侦听器来阻止touchmove可滚动元素中的默认事件,该事件不会像在 Safari 9 及更低版本中那样被默认阻止(在所有主要浏览器中也是如此)。

这可以在这里重现:http: //codepen.io/anon/pen/PGRxOv

重现步骤:

  • 获取具有可滚动内容的元素(溢出:滚动)。
  • 为事件添加一个事件侦听器touchmouve,并调用event.preventDefault()该事件侦听器。

预期成绩:

该元素不应该是可滚动的。

实际结果:

该元素在 Safari 10 上仍可滚动。

版本: iOS 10.0.2

可能是 webkit 问题...我在 webkit bug tracker 上打开了一个问题。

同时,如果有人有解决方法(除了阻止touchstart),那就太好了:)

我也尝试return false在侦听器中,但它也不起作用。

4

1 回答 1

0

感谢您写这篇文章并提出一个问题——这让我完全困惑!

您的 codepen 解决方案似乎对我不起作用,但我后来在这里找到了另一个解决方案:https ://github.com/metafizzy/flickity/issues/457

这是他们的解决方案:

window.addEventListener( 'touchmove', function() {})

感觉很hacky,但对我的情况有用。

我希望这可以帮助其他对此感到沮丧的人。

于 2017-02-03T18:40:29.123 回答