阻止touchStart但允许点击事件

时间:2016-10-17 19:53:08

标签: javascript jquery mobile-safari

我想阻止touchStart个事件,以防止Safari在某些条件下在iOS设备中弹跳。

为此,我使用了以下内容:

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

但是现在没有任何点击事件可以使用它:

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

Reproduction online

我不能将click事件替换为任何其他事件。因为这可能来自最终用户。

以前在iOS 10中,弹跳could be avoided by preventing only touchMove但是从iOS 10开始它将会反弹,除非{?1}被阻止。

有没有办法只阻止touchStart事件但允许使用touchStart事件?

1 个答案:

答案 0 :(得分: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>