webApp禁止页面整体下拉,不影响页面内部scroll
<section class="page-container">
<div style="width: 100%;min-height: 2000px;">内容滚动区域</div>
</section>
// 禁止页面滑动 var overscroll = function (el) { el.addEventListener('touchstart', function () { let top = el.scrollTop let totalScroll = el.scrollHeight let currentScroll = top + el.offsetHeight //If we're at the top or the bottom of the containers //scroll, push up or down one pixel. // //this prevents the scroll from "passing through" to //the body. if (top === 0) { el.scrollTop = 1 } else if (currentScroll === totalScroll) { el.scrollTop = top - 1 } }) el.addEventListener('touchmove', function (evt) { //if the content is actually scrollable, i.e. the content is long enough //that scrolling can occur if (el.offsetHeight < el.scrollHeight) { evt._isScroller = true } }) } overscroll(document.querySelector('.page-container'))//允许滚动的区域 document.body.addEventListener('touchmove', function (evt) { //In this case, the default behavior is scrolling the body, which //would result in an overflow. Since we don't want that, we preventDefault. if (!evt._isScroller) { evt.preventDefault() } })
禁止
document.querySelector('body').addEventListener('touchmove', function(e) {
e.preventDefault();
})
如果页面有部分区域必须需要滑动,需要用touchmove事件的话,那么可以把那部分的touchmove事件过滤掉
比如我想要以下代码中的bottom类可以用touchmove事件
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<title>微信禁止下拉露黑底</title>
</head>
<body>
<div class="top"></div>
<div class="bottom"></div>
</body>
</html>
document.querySelector('body').addEventListener('touchmove', function(e) {
if (!document.querySelector('.bottom').contains(e.target)) {
e.preventDefault();
}
})

浙公网安备 33010602011771号