最近在做移动端获取验证码倒计时问题,发现了一个问题,就是在屏幕休眠或者该程序切换到后台 的时候,ios系统倒计时会暂停,但是在使用中的时候这个绝对算是一个bug。我的选择是获取当前时间戳来解决这个问题,具体代码分析如下:
function Time_a() { var time = 10; $(".time").text(time); var t = setInterval(function() { if(time == 0) { clearTimeout(t); } else { time--; $(".time").text(time) } }, 1000) }
当用time--;来倒计时的时候,在IOS11上面就会出现倒计时断层。因此我选择使用时间戳,再配合后台的时间限制,就可以解决IOS的后台运行时间限制。
function Time_b(){ var time=10; var beginTime=new Date().getTime(); $(".time-a").text(time); var t= setInterval(function(){ var newTime=new Date().getTime(); var dTime=(newTime-beginTime)/1000; dTime=parseInt(dTime); time = 10-dTime > 0 ? 10-dTime : 0; $(".time-a").text(time); },1000) }