禁止touchStart,但允许点击事件

Prevent touchStart but allow click events

本文关键字:许点击 事件 touchStart 禁止      更新时间:2023-09-26

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

要做到这一点,我使用以下命令:

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

但是现在所有的点击事件都不起作用了:

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

生殖在线

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

在iOS 10之前,可以通过阻止touchMove来避免反弹,但从iOS 10开始,除非touchStart也被阻止,否则它会反弹。

是否有办法只阻止touchStart事件,但允许使用click事件?

我没有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>