最近在作移動端獲取驗證碼倒計時問題,發現了一個問題,就是在屏幕休眠或者該程序切換到後臺 的時候,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的後臺運行時間限制。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) }