5

Web ページのすべてのスクロールを無効にできるかどうかを知りたいです。

私は現在使用しています

html, body { overflow:hidden; }

問題は、これが iOS デバイスでは機能しないことです。マウス ホイールを押したまま下にドラッグすると、スクロールすることもできるため、問題に対する非常に貧弱な解決策のように思えます。

すべてのデバイスですべてのスクロール方法を無効にしてから再度有効にする方法はありますか?

4

1 に答える 1

6

私はこれとまったく同じ問題を抱えていました。次のように修正しました。

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/

于 2013-07-11T15:18:27.700 に答える