Fork me on GitHub

h5锁屏倒计时失效问题

最近开发微信内嵌h5页面时遇到一个问题,ios手机锁屏倒计时没有走,翻阅了一些资料,解决了这个问题:

刚开始代码是:

let seconds = 120;
this.time = setInterval(() => {
    seconds --;
    this.verificationContent = '倒计时' + seconds + 's';
    if (seconds === 0) {
        clearInterval(this.time);
        this.time = 0;
    }
})

后来我添加了meta标签:

  • 可以在meta里进行设置,设置页面nocache,每次访问次页面,均需要从服务器重新获取,而不是使用缓存中读取
  • expires设定过期时间,一旦过期就必须请求服务器,
  • expries出现在http-equiv属性中,使用content属性表示页面缓存的过期时间
  • expries=0,缓存过期前的分钟数。若用户在页面过期前返回该页面,就会显示缓存的版本页

    <meta http-equiv="pragma" content="no-cache"> 
    <meta http-equiv="cache-control" content="no-cache"> 
    <meta http-equiv="expires" content="0">
    

但是仍然没有起作用,后来用获取系统时间做差值,解决了这个问题:

let nowTime = (new Date).getTime();
this.time = setInterval(() => {
    let currTime = (new Date).getTime();
    let seconds = 120 - Math.floor((currTime - nowTime)/1000);
    this.verificationContent = '倒计时' + seconds + 's';
    if (seconds === 0) {
        clearInterval(this.time);
        this.time = 0;
    }
})
-------------本文结束感谢您的阅读-------------