2013-07-11 11 views
5

ウェブページ上のすべてのスクロールを無効にすることができるかどうかを知りたいです。ウェブページのすべてのスクロールを無効にする

私は現在

html, body { overflow:hidden; } 

を使用しています問題、これはiOSデバイス上では動作しません、あなたはマウスホイールで保持し、それを下にドラッグすると、それは非常に悪いように思えるので、あなたはまた、スクロールすることができるということです問題への解決

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

+1

ページをオーバーフローさせるコンテンツを追加しないでください。いくつかのコンテキストとユースケースがここで役立ちます。 – deceze

+0

これはうまくいきませんが、ビューポートをカバーする透明なオーバーレイdivを追加しようとします。 iOS上でドラッグすると、おそらく何もしないdivをスクロールしようとします。 –

+0

これを試してください:* {overflow:hidden; } –

答えて

5

私はまったく同じ問題を抱えていました。以下のように修正しました。

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/

+0

bodyタグに 'data-disabled =" true "'を追加するなど、いくつかの変更を行いました。ユーザーがスクロールする必要があるときこれは私が期待するように動作します。あなたのお返事ありがとうございました。 –

+0

命を救うコード! – udog

関連する問題