Javascriptでスマホのスクロールを禁止する

Javascriptでスマホのスクロールを禁止する

メニューを開いている間はスクロールさせないようにするとかでの用途を想定している。

JS

※1: touchやwheelイベントを設定すると、スクロールをする前にブロックする処理(e.preventDefault()など)がないかを確認するため、非同期のスクロールがブロックされてスクロールがカクつくScroll Jankが発生する。e.preventDefailt()がないことがあらかじめ分かってるときはpassive: trueというオプションをイベントリスナー設定時に付与するとScroll Jankを防ぐ。逆にe.preventDefault()を指定するイベントであればpassive: falseと明示することでe.preventDefailt()があることをブラウザに伝え、意図しない動きを防ぐことができる。なお、jQueryはデフォルトでpassive: trueでfalseにできないためここだけvanillaで書く。


※2: removeEventListenerはaddEventListenerの逆でイベントを解除する。コールバック関数は名前付きのものを用意する必要がある。無名関数では解除できない


コメントをする

メールアドレスがサイト上で公開されることはありません。

コメント

コメントはありません。