防止 iOS 11.3 溢出弹跳

Posted

技术标签:

【中文标题】防止 iOS 11.3 溢出弹跳【英文标题】:Prevent iOS 11.3 overflow bouncing 【发布时间】:2018-04-19 16:52:40 【问题描述】:

从现在开始,我一直在 touchmove 事件中使用 preventDefault 技术,当我注意到它在 ios 11.3 上似乎不再适用于 Safari、Chrome 或 Firefox 时:

document.ontouchmove = function(event)
    event.preventDefault();
 

iOS 现在有什么变化吗?防止页面顶部或底部弹跳的方法是什么?

Reproduction online

Reproduction online with jQuery

视频在这里:

【问题讨论】:

仅供参考:无法复制,iOS 11.3、Chrome、iPhone6s 嗯……这很奇怪……我重新启动看看。 不,我仍然可以复制它。 好的,我用 safari 试过了,我可以重现 我已经在另一部装有 iOS 11.3 的手机(iphone 5S)上对其进行了测试,但无法重现。这相当很奇怪......因为我可以在所有命名的浏览器以及其他 iPhone 中在我的 (iphone 7) 中重现它。 【参考方案1】:

这是由 WebKit 的一个错误引起的。 Bug 182521

试试

window.addEventListener("touchstart", function(event) 
  event.preventDefault();
, passive: false);

作为一种解决方法。

【讨论】:

我得到“preventBouncing is not defined” 这完全禁用了滚动【参考方案2】:

除了暴食回答:

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

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

【讨论】:

是的,同样的事情。您可以对 touchmove 或 touchstart 使用被动处理程序并阻止它。 这可行,但也可以锁定在模态框内

以上是关于防止 iOS 11.3 溢出弹跳的主要内容,如果未能解决你的问题,请参考以下文章

如何防止 SwiftUI SegmentedControl 中的文本“弹跳”

css 防止狮子弹跳滚动

如何防止 iOS 上的格式字符串攻击和缓冲区溢出?

如何防止子进程在 Dock 中弹跳?

调整keyboardWillBeShown/keyboardWillBeHidden的内容时如何防止滚动视图弹跳

如何防止 d3.js 强制布局在恢复/重启时脉动/弹跳