私は iPad ベースの Web アプリに取り組んでおり、Web ページのように見えないようにオーバースクロールを防ぐ必要があります。現在、これを使用してビューポートをフリーズし、オーバースクロールを無効にしています:
document.body.addEventListener('touchmove',function(e){
e.preventDefault();
});
これはオーバースクロールを無効にするのに最適ですが、私のアプリにはいくつかのスクロール可能な div があり、上記のコードはスクロールを妨げます。
私は iOS 5 以降のみをターゲットにしているので、iScroll のようなハックなソリューションは避けてきました。代わりに、スクロール可能な div にこの CSS を使用しています。
.scrollable {
-webkit-overflow-scrolling: touch;
overflow-y:auto;
}
これは、ドキュメント オーバースクロール スクリプトがなくても機能しますが、div スクロールの問題は解決しません。
jQuery プラグインがなければ、オーバースクロール修正を使用して $('.scrollable') div を除外する方法はありますか?
編集:
私はまともな解決策である何かを見つけました:
// Disable overscroll / viewport moving on everything but scrollable divs
$('body').on('touchmove', function (e) {
if (!$('.scrollable').has($(e.target)).length) e.preventDefault();
});
div の先頭または末尾を超えてスクロールしても、ビューポートは移動します。それを無効にする方法も見つけたいと思います。