防止iOS 11.3溢出弹跳

13

目前我一直在使用preventDefault技术处理touchmove事件,但是我发现它在iOS 11.3上无论是Safari、Chrome还是Firefox都似乎不再起作用:

document.ontouchmove = function(event){
    event.preventDefault();
} 
现在iOS有什么变化了吗?如何防止页面顶部或底部的弹跳?
在线演示:
- 不使用jQuery的演示 - 使用jQuery的演示 视频在此处:
- enter image description here

FYI:无法复现,iOS 11.3,Chrome,iPhone6s。 - kuzdu
嗯...这很奇怪...我会重新启动并查看。 - Alvaro
不,我仍然可以重现它。 - Alvaro
好的,我用Safari尝试了一下,我可以重现。 - kuzdu
我已经用另一部装有iOS 11.3的iPhone 5S进行了测试,但无法复现此问题。这真是相当奇怪...因为我在我的iPhone 7上以及其他iPhone上的所有命名浏览器中都能够复现它。 - Alvaro
2个回答

8
由 WebKit 的一个 bug 导致。 Bug 182521 尝试。
window.addEventListener("touchstart", function(event) {
  event.preventDefault();
}, {passive: false});

作为一种解决方法。

我收到了“preventBouncing未定义”的错误。 - david_nash
5
这会完全禁用滚动。 - Maxwell s.c

3
除了gluttonys的回答之外:

window.addEventListener("touchmove", function(event) {event.preventDefault();}, {passive: false} );

对我来说是解决Safari弹跳问题的有效方法。

是的,同样的事情。您可以使用被动处理程序来处理touchmove或touchstart事件并将其阻止。 - Alvaro
这个可以工作,但也会在模态框内锁定。 - Oğulcan Karayel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接