カテゴリー︎: iPhone (iOS)・【JavaScript】
これまで、いろいろと
iPhoneでスクロールを固定して解除する方法をいろいろと試ししてきたが
うまくいかなかった。。。
特に、やっかいなのはブラウザで見るスマホ版はうまくいくが
iPhone実機でスクロールすると、どうしても背景が動いてしまうこと!
なぜだ??
このコードも試したが、ダメだ。
↓
document.documentElement.style.overflow = 'hidden'; document.body.style.overflow = 'hidden';
PCで見ると確かに機能しているが、実機iPhoneでは
スクロールができたり、できなかったり不安定なのが、またやっかいである。
しかし!やっと解決した!
このコードはiPhone実機で、ちゃんとスクロールを制御することができた!!
//iPhoneでスクロールを許可する
document.removeEventListener('touchmove', preventDefault, {passive: false});
//iPhoneでスクロールを禁止する
document.addEventListener('touchmove', preventDefault, {passive: false});
// スクロール禁止用関数
function preventDefault(e) {
e.preventDefault();
}
このコードは、preventDefaultという名前の関数を定義して
引数として渡されたイベントオブジェクトのpreventDefaultメソッドを呼び出し
touchmoveイベントが発生した場合、ブラウザはスクロールを実行するため
preventDefault関数が呼び出されることでスクロールを禁止することができるということ。