在app的某一个页面要弹出一个蒙层这种情况是很常见的场景,但是我们经常会碰到这样的情况,当出现蒙层的时候,蒙层下面的内容还是可以上下滚动。
以下是关于这种情况的解决方法,亲测ios和android都有效。
1 | function preventDefault(e) { |
在出现蒙层的时候调用disableScroll方法即可解决,但是在部分android机中还是能出现上下滚动情况。这时候我们需要对蒙层这个dom对象进行处理:1
2
3dom.addEventListener("touchmove", function (e) {
e.preventDefault();
}, false);
完成这一步基本上所有的机型都会生效。
如果想让蒙层后面的内容上下滚动,调用下面的方法即可:1
2
3
4
5
6
7
8
9function enableScroll() {
if (window.removeEventListener) {
window.removeEventListener('DOMMouseScroll', preventDefault, false);
}
window.onmousewheel = document.onmousewheel = null;
window.onwheel = null;
window.ontouchmove = null;
document.onkeydown = null;
}
另外一种情况是连续点击蒙层的时候后面的内容区域也会上下滚动,我的一种解决方法是在蒙层的dom对象上禁止连续多次点击:1
2
3
4
5dom.addEventListener("click", function(e) {
if (e.detail > 1) {
return false;
}
}, false);