2016-10-17 2 views
0

特定の条件下でSafariがiOSデバイスでバウンスするのを防ぐため、touchStartイベントを防止したい。クリックイベントのtouchStartを防止するがクリックイベントを許可する

$('.wrapper').on('touchstart', function(e) { 
    e.preventDefault(); 
}); 

しかし、今誰もそれに取り組んでいない:

$('.wrapper').on('click', function() { 
    $('.wrapper').text('Click fired'); 
}); 

Reproduction online

私はclickを置き換えることはできません、私はfolowingを使用していそうするには

他のイベントのイベント。これはエンドユーザーからのものである可能性があります。

iOS 10以前は、バウンスcould be avoided by preventing only touchMoveでしたが、iOS 10以降は、touchStartも防止されないとバウンスします。

touchStartイベントだけを防止する方法はありますか?clickイベントを使用する方法はありますか?

答えて

1

私は試乗用のiOS 10を用意していない、これは野生の推測ですが、このスニペットを確認してください。

$('.wrapper').on('click touchstart', function(e) { 
 
    if (e.type != 'click') { 
 
    e.preventDefault(); 
 
    } else { 
 
    $('.wrapper').text('Click fired'); 
 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="wrapper">asd</div>

+0

Nopに、機能していません。 'click'の前に常に' touchStart'を起動させるようです。したがって、クリックを防止します。 – Alvaro

+0

'クリック 'を' mousedown'に変更するのはどうですか? – Dekel

+0

私が言ったように、それは選択肢ではありません。開発者は任意のイベントを使用することができ、おそらく 'クリック 'を使用します。 回避策を見つけました。しかし、ハックのように見える:DIは、デフォルトを防止した後、イベントターゲット上でクリックイベントを引き起こす:https://jsfiddle.net/8n47whd0/5/ – Alvaro

関連する問題