安卓设备上touchend事件的bug

发布于 2022-09-02 00:28:53 字数 634 浏览 14 评论 0

在一个元素上同时绑定了touchend,touchstart,和touchmove事件,
通过设置参数move的值来判断touchend时触发某个事件,touchemove时不触发,
但是在ios设备上表现良好,安卓设备上就不会触发touchend,或经常语言连续点击才会触发,
查了资料在touchstart事件中,阻止冒泡,touchstart正常触发,但是会禁用浏览器的scroll事件,不能滑动了,
有什么好的解决方案么?

    
  var move = false;   //判断是否滑动
  $(document).delegate(".card_list li", "touchend", function (event) {
    if(!move)
    {
        //执行其他方法
    }
    return false;
  });
  $(document).delegate(".card_list li","touchmove",function(){
    move = true;
  })
  $(document).delegate(".card_list li","touchstart",function(){
    move = false;
    event.preventDefault();
  })

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

腻橙味 2022-09-09 00:28:53

这是一个 Android 内置浏览器的 bug,存在于 Android 4.0 和 4.4 版本里,已经被很多人反馈过了。

你可以试试 mobiletouch 这个库,它在触屏事件上层做了封装,你可以用 swipeStartswipeProgressswipe 来替代 touchstart, touchmovetouchend.

蓝礼 2022-09-09 00:28:53

https://github.com/chemzqm/iscroll
Android 2.x + ios 6.x 表现良好

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文