H5 阻止整个页面下拉刷新,并允许内部元素滚动
移动端页面默认会有下拉刷新的效果,在微信,手机浏览器以及使用 webview 嵌入 app 中,都会有这种效果, 禁用 body 的 touchmove 即可
document.body.addEventListener(
"touchmove",
(e) => {
//阻止默认的处理方式(阻止下拉滑动的效果)
e.preventDefault();
// 这里可以允许内部元素滚动
document.querySelector(".content").scrollTop = XXX;
return false;
},
/**
如果我们是为了阻止页面滚动添加了上述代码,默认行为就是滚动页
面,但是如果我们阻止了这一默认行为,浏览器是无法预先知道的,
必须等待事件监听器执行完成后,才知道要去阻止默认行为。等待监
听器的执行是耗时的,,有些甚至耗时很明显,这样就会导致页面卡
顿。即便监听器是个空函数,也会产生一定的卡顿,毕竟空函数的执
行也会耗时。所以就有了passive属性,如果要阻止默认事件可以设
置passive:false。
*/
{ passive: false }
);