javascript – iOS:バウンススクロールを無効にするが、通常のスクロールは許可する

ユーザーがページの端に当たったときに自分のサイトのコンテンツが乱れることは望ましくありません。私はそれを止めさせたいだけです。

私がいたるところで見ている、オムニプレゼントのJavaScriptソリューションはこれです。

$(document).bind(
   'touchmove',
   function(e) {
     e.preventDefault();
   }
);

しかし、これはスクロールを完全に妨げます。バウンスを削除するだけの方法はありますか。 JSではなくCSSまたはメタタグを使用することを推奨しますが、機能するものなら何でもできます。

ベストアンサー
私はもう一つの答えを加えなければなりません。
私の最初のアプローチはうまくいくはずです、しかし、たとえe.stopPropagationであっても、まだページ全体を邪魔するiOSのバグがあります。

mikeyUXはこれのための回避策を見つけます:https://stackoverflow.com/a/16898264/2978727
どうして彼はこの素晴らしいアイディアに対して何回かクリックするだけなのだろうか…。

これが私の場合私が彼のアプローチを使った方法です:

var content = document.getElementById('scrollDiv');
content.addEventListener('touchstart', function(event) {
    this.allowUp = (this.scrollTop > 0);
    this.allowDown = (this.scrollTop < this.scrollHeight - this.clientHeight);
    this.slideBeginY = event.pageY;
});

content.addEventListener('touchmove', function(event) {
    var up = (event.pageY > this.slideBeginY);
    var down = (event.pageY < this.slideBeginY);
    this.slideBeginY = event.pageY;
    if ((up && this.allowUp) || (down && this.allowDown)) {
        event.stopPropagation();
    }
    else {
        event.preventDefault();
    }
});

転載記事の出典を記入してください: javascript – iOS:バウンススクロールを無効にするが、通常のスクロールは許可する - コードログ