2016-10-13 50 views
2

在Safari上10,通过定义一个简单的监听器,其防止默认滚动元件内的touchmove事件时,不默认阻止事件,因为它的Safari 9和以下(不它也适用于所有主流浏览器)。滚动不能默认上touchmove事件防止上iOS10

这是可重复的位置:http://codepen.io/anon/pen/PGRxOv

重现步骤:

  • ,要考虑与可滚动内容的元件(溢出:滚动)。
  • 它添加事件侦听器touchmouve事件,并调用该事件侦听器event.preventDefault()

预期结果:

的元件不应该滚动的。

实际结果:

元素仍然是滚动的Safari上10

版本: 的iOS 10.0.2

可能是一个WebKit的问题......我开了一个issue在webkit bug跟踪器上。

在平均时间,如果任何人有一种变通方法(除了防止touchstart),这将是巨大的:)

我也试图在听者return false但它也不起作用。

回答

0

感谢写这一点,并提出问题 - 它让我彻底难倒了!

你codepen解决方案似乎并没有为我工作,但因为我已经在这里找到另一种解决办法:https://github.com/metafizzy/flickity/issues/457

这是他们的解决方案:

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

感觉非常哈克,但一直为我的情况。

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