swiper.js 在微信中双击上滑

新手上路,请多包涵

问题描述

在手机苹果端的微信里,双击屏幕滑动模块会上移,并且不会恢复正常状态。
双击后,出现图下情况,不知道是我配置的问题,还是swiper.js没有处理这个bug,
麻烦大神指点一下。

318b937bec33f295fa9117f798748a37.png

Swiper的配置代码

var mySwiper = new Swiper (".swiper-container", {
        direction: 'vertical',
        mousewheelControl : true,
        height : window.innerHeight,

        // 如果需要前进后退按钮
        nextButton: '.swiper-next',
        
        simulateTouch : false,

        onInit: function(swiper){ //Swiper2.x的初始化是onFirstInit
            swiperAnimateCache(swiper); //隐藏动画元素
            swiperAnimate(swiper); //初始化完成开始动画
        },
        onSlideChangeEnd: function(swiper){
            swiperAnimate(swiper); //每个slide切换结束时也运行当前slide动画
            if(swiper.isEnd){
                swiper.nextButton[0].style.display='none';
            }else{
                swiper.nextButton[0].style.display='block';
            };
        },
        });
    var bbi = document.querySelector('.swiper-next');
     document.body.ondblclick = function(){
         bbi.click();
         alert("lhi");
    }
阅读 3.1k
1 个回答
新手上路,请多包涵

这个不是swiper的问题哦,我也刚遇到过了。
是因为html5页面嵌入到ios中的问题,在安卓中没有这个问题。
解决方案就是 将双击事件给阻止掉,监听用户是否是双击了,然后将第二次的点击事件给阻止掉,
代码如下:

  if (system.indexOf('iOS') !== -1) {//只有ios中有这个问题,所以判断下系统是不是在ios中
      let lastTouch = 0; //缓存上一次的tap时间
      document.body.addEventListener('touchend',function(e) {
        let nowTouch = new Date().getTime();
        let delta = nowTouch - lastTouch;
        if (delta < 500 && delta > 0) {
          e.preventDefault();
          return false;
        }
        lastTouch = nowTouch
      },false)
  }
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题