カテゴリー︎: 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関数が呼び出されることでスクロールを禁止することができるということ。