スマホでスクロールを禁止、途中で解除(スクロール再開)の動作を作りたいです。
こちらの記事を参考にしたコードが以下になります。
※解除の部分はまだ作成しておりません。
Javacript
1$(function(){ 2 $(window).on('touchmove.noScroll', function(e) { 3 e.preventDefault(); 4 }); 5});
FTPでサーバーに上げAndroid実機で確認したところ
スクロールができてしまいます。
他の方法を調べようにも「touchmove」イベントのやり方しか出てきません。
スマホ実機でスクロールを禁止/解除する方法はないでしょうか?
scalableを設定した場合、touchmoveイベントが取得できない
こちらの記事によるとmeta情報でscalableを指定しているとtouchmoveが動作しないようで、
恐らくこれが原因なのではと思っておりますが、
レスポンシブ対策のためscalableを切る事が出来ません。
touchmoveを使わず、かつiPhoneでもAndroidでもスクロールを禁止する方法はないでしょうか?
Androidにtouchmoveイベントのバグ?があるようなので、
コードを以下のように書き換えました。
JavaScript
1$(function(){ 2 var agent = navigator.userAgent; 3 if(agent.search(/iPhone/) != -1) { 4 $(window).on('touchmove.noScroll', function(e) { 5 e.preventDefault(); 6 }); 7 } else if(agent.search(/Android/) != -1) { 8 $('body').css({'position':'fixed','top':'0'}); 9 } 10 11 $('#clearBtn').click(function(){ 12 if(agent.search(/iPhone/) != -1) { 13 $(window).off('.noScroll'); 14 } else if(agent.search(/Android/) != -1) { 15 $('body').css({'position':'static'}); 16 } 17 }); 18});
これでAndroidは思った動きになったのですが、
iPhoneではスクロール禁止が解除されません。
何がいけないのでしょうか?
分かる方ご教授お願いいたします。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/05/10 15:10
2018/05/10 15:16
2018/05/10 15:19
2018/05/10 16:17