在 iOS 15 Safari 中禁用下拉刷新
Disable pull-to-refresh in iOS 15 Safari
iOS 15 已经发布,新版本的 Safari 也发布了无处不在的下拉刷新功能。不管喜欢与否,单页应用不太喜欢这样。
以下是在 Chrome 上为 iPhone 禁用它的方法:
Disable Chrome's pull-to-refresh on iPhone
知道如何在 iOS 15 的 Safari 中执行相同的操作吗?
CSSoverscroll-behavior-y: contain
没有效果。
2013 年名为 iNoBounce 的库 (https://github.com/lazd/iNoBounce) 实际上在 iOS 15.
上仍然做得很好
直接复制文档中的示例确实禁用了下拉刷新。
iNoBounce 一直有效,直到您使用一根以上的手指使用手势。
比方说你用两根手指下拉网页(例如),然后你会得到刷新。
目前,唯一对我有用的方法(但它会禁用缩放、滚动和其他触摸功能)是使用 event.preventDefault() 监听“touchmove”并将 passive 设置为 false。
适用于我们的用例的非常粗略的解决方案是为正文元素设置一个 overflow: hidden;
,但是您需要为所有内容设置一个溢出容器元素,否则滚动会被阻塞。
<body>
<div id="container"> Content </div>
</body>
body {
overflow: hidden;
}
#container {
height: 100vh;
overflow-y: auto;
-webkit-overflow-scrolling: touch;
}
我通过将目标元素的 CSS 属性 触摸操作设置为 none 来禁用此行为。
touch-action:none;
https://developer.mozilla.org/en-US/docs/Web/CSS/touch-action
iOS 15 已经发布,新版本的 Safari 也发布了无处不在的下拉刷新功能。不管喜欢与否,单页应用不太喜欢这样。
以下是在 Chrome 上为 iPhone 禁用它的方法:
Disable Chrome's pull-to-refresh on iPhone
知道如何在 iOS 15 的 Safari 中执行相同的操作吗?
CSSoverscroll-behavior-y: contain
没有效果。
2013 年名为 iNoBounce 的库 (https://github.com/lazd/iNoBounce) 实际上在 iOS 15.
上仍然做得很好直接复制文档中的示例确实禁用了下拉刷新。
iNoBounce 一直有效,直到您使用一根以上的手指使用手势。 比方说你用两根手指下拉网页(例如),然后你会得到刷新。
目前,唯一对我有用的方法(但它会禁用缩放、滚动和其他触摸功能)是使用 event.preventDefault() 监听“touchmove”并将 passive 设置为 false。
适用于我们的用例的非常粗略的解决方案是为正文元素设置一个 overflow: hidden;
,但是您需要为所有内容设置一个溢出容器元素,否则滚动会被阻塞。
<body>
<div id="container"> Content </div>
</body>
body {
overflow: hidden;
}
#container {
height: 100vh;
overflow-y: auto;
-webkit-overflow-scrolling: touch;
}
我通过将目标元素的 CSS 属性 触摸操作设置为 none 来禁用此行为。
touch-action:none;
https://developer.mozilla.org/en-US/docs/Web/CSS/touch-action