7

Safari iOSでオーバースクロールを防ぐにはどうすればよいですか?タッチジェスチャを使用してサイトをナビゲートしますが、できません。

私はこれを試しました:

$(window).on('touchstart', function(event) {

    event.preventDefault();

});

しかし、この方法ですべてのジェスチャを無効にしました。実際、ピンチインとピンチアウトでズームインすることはできません。

解決策はありますか?ありがとう。

4

2 に答える 2

14

この方法では、ブラウザ自体のオーバースクロールを防ぎながら、スクロール可能な要素を許可します。

//uses document because document will be topmost level in bubbling
$(document).on('touchmove',function(e){
  e.preventDefault();
});
//uses body because jquery on events are called off of the element they are
//added to, so bubbling would not work if we used document instead.
$('body').on('touchstart','.scrollable',function(e) {
  if (e.currentTarget.scrollTop === 0) {
    e.currentTarget.scrollTop = 1;
  } else if (e.currentTarget.scrollHeight === e.currentTarget.scrollTop + e.currentTarget.offsetHeight) {
    e.currentTarget.scrollTop -= 1;
  }
});
//prevents preventDefault from being called on document if it sees a scrollable div
$('body').on('touchmove','.scrollable',function(e) {
  e.stopPropagation();
});
于 2013-01-02T22:12:47.530 に答える
7

これは、これを達成する最も簡単な方法です。

$(function() {
    document.addEventListener("touchmove", function(e){ e.preventDefault(); }, false);
});

お役に立てれば。

一番。

于 2013-11-16T05:02:53.807 に答える