在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
,但它也不起作用。
答案 0 :(得分:1)
感谢您撰写此文并提出问题 - 这让我感到非常困惑!
您的codepen解决方案似乎对我不起作用,但此后我在此处找到了另一种解决方案:https://github.com/metafizzy/flickity/issues/457
这是他们的解决方案:
window.addEventListener( 'touchmove', function() {})
感觉非常hacky但是对我的情况有效。
我希望这可以帮助其他人对此感到沮丧。