ios锁屏或页面隐藏时,定时器setInterval倒计时不执行,解锁显示后才执行的问题

手机锁屏后,ios h5浏览器定时器暂停执行了,发送验证码的秒数或倒计时没有继续往下走,遇到这种问题可以用visibilitychange这种方式处理

 

addVisibilitychange();这个方法记得只在ios环境下执行,安卓不需要。网上找一下判断ios和安卓的方法。

// 监听页面隐藏(锁屏)或后台执行时,解决定时器不执行的问题
    addVisibilitychange(){
      let that = this;
      let start,end,vibS,newS;
      document.addEventListener('visibilitychange',function(){
        // hidden 为锁屏隐藏状态,visible为重新显示状态
        if(document.visibilityState === 'hidden'){
          start = new Date().getTime();
        } else if(document.visibilityState === 'visible'){
          end = new Date().getTime();
          // vibS为锁屏间隔的时间(秒),timer为定时器锁屏前显示的秒数
          vibS = Math.floor((parseInt(end) - parseInt(start))/1000)
          newS = parseInt(that.timer) - vibS
          if(newS >0){
            // 重新赋值,间隔后的新的定时器时间
            that.timer = newS
          } else {
            // 已经超出范围,则默认秒数已经读完,恢复原来时间、定时器,显示重发验证码文案
            that.timerShow = false;
            clearInterval(that.timeing)
            that.timeing = null
            that.timer = 120
          }
        }
      });
    },

定时器代码

getTimeCount(){
      if(!this.timeing){
        this.smsCode = ""; // 清空验证码
        this.timerShow = true;
        this.timeing = setInterval(()=>{
          this.timer--
          if(this.timer <0){
            this.timerShow = false;
            clearInterval(this.timeing)
            this.timeing = null
            this.timer = 120
          }
        },1000)
      }      
    },

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值