Web ページのすべてのスクロールを無効にできるかどうかを知りたいです。
私は現在使用しています
html, body { overflow:hidden; }
問題は、これが iOS デバイスでは機能しないことです。マウス ホイールを押したまま下にドラッグすると、スクロールすることもできるため、問題に対する非常に貧弱な解決策のように思えます。
すべてのデバイスですべてのスクロール方法を無効にしてから再度有効にする方法はありますか?
Web ページのすべてのスクロールを無効にできるかどうかを知りたいです。
私は現在使用しています
html, body { overflow:hidden; }
問題は、これが iOS デバイスでは機能しないことです。マウス ホイールを押したまま下にドラッグすると、スクロールすることもできるため、問題に対する非常に貧弱な解決策のように思えます。
すべてのデバイスですべてのスクロール方法を無効にしてから再度有効にする方法はありますか?
私はこれとまったく同じ問題を抱えていました。次のように修正しました。
var disableScroll = false;
var scrollPos = 0;
function stopScroll() {
disableScroll = true;
scrollPos = $(window).scrollTop();
}
function enableScroll() {
disableScroll = false;
}
$(function(){
$(window).bind('scroll', function(){
if(disableScroll) $(window).scrollTop(scrollPos);
});
$(window).bind('touchmove', function(){
$(window).trigger('scroll');
});
});
タッチ移動が完了するまでウィンドウ スクロール イベントが発生しないため、タッチ移動はウィンドウにバインドされます。これにより、iOS でのエクスペリエンスがはるかにスムーズになります。
ページを「スロー」できるため、これは完全な解決策ではありませんが、スローが完了すると目的の位置に戻ります (ウィンドウ スクロール イベントが発生するため)。これは、iOS ブラウザーがパフォーマンスのために多くのイベントを削除するためです。また、ページがスローされている間は setTimeout および setInterval 関数は起動しません。ループを使用することもできません。
ここを参照してくださいhttp://jsfiddle.net/8T26k/