在某些情況下,移動端開發網頁不希望用戶能夠向下滑動頁面(因為向下滑動可以看見域名等),所以需要禁止頁面滑動,然而有的方法只是禁止當前頁面滾動,而不能禁止層級更低的頁面滾動,例如最表面的遮罩層能夠禁止滑動,但是在遮罩層上面滑動會導致遮罩層下面的頁面滾動,發生穿透,在查閱資料之后,得到如下方法:
$("body").css({
position: "fixed",
width: "100%"
});
document.body.addEventListener("touchmove", bodyScroll, false);
function bodyScroll(event) {
event.preventDefault();
}
切不可用以下寫法:
document.body.addEventListener("touchmove",
function bodyScroll(event) {
event.preventDefault();
}
, false
);
使用以上方法后可以禁止頁面滾動也可以防止發生穿透事件,但是有一點需要注意的是,這樣好像會導致當input輸入框聚焦時安卓端由於已經禁止滑動,鍵盤調起時可能遮住輸入框,這是就需要手動監聽鍵盤狀態,使頁面動態上移核實的距離,出現在可視區域(詳細方法下一篇會提到);ios端則不存在這個問題