iOS10上的touchmove事件无法默认阻止滚动

时间:2016-10-13 17:35:37

标签: ios scroll touch preventdefault touchmove

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

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

重现步骤:

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

预期结果:

元素不应该是可滚动的。

实际结果:

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

版本: iOS 10.0.2

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

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

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

1 个答案:

答案 0 :(得分:1)

感谢您撰写此文并提出问题 - 这让我感到非常困惑!

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

这是他们的解决方案:

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

感觉非常hacky但是对我的情况有效。

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