问题描述:iOS的壳,H5的内容。点击获取验证码,进入60秒倒计时,此时将APP进入后台挂起,过一分钟之后,重新进入此APP,发现倒计时并未进行完,依旧显示倒计时状态。
如果利用iOS实现后台运行的方法去解决这个问题,显得大材小用。那么就需要从H5入手。
实现思路,获取两个时间戳,一个在点击获取验证码按钮时获取,另一个在循环时获取,并在循环方法中处理两个时间戳的差值。
实现代码如下:
$(".get").click(function(){
var _time=parseInt(new Date().getTime()/1000); // 时间戳1
_time=_time+60;
$('#checkVal').attr("disabled", false);
$(".get").attr("disabled", true);
$(".get").val("60s后重发");
$(".get").css({"color":"#999","border-color":"#dedede"});
var _newt;
var InterValObj = window.setInterval(function(){
_newt=parseInt(new Date().getTime()/1000); // 时间戳2
_endT= _time - _newt;
if(_endT>0){
$(".get").val(_endT + "s后重发");
}else{
$(".get").val("重新发送");
$(".get").css({"color":"#17b4eb","border-color":"#17b4eb"});
$(".get").attr("disabled", false);
$('#checkVal').attr("disabled", true);
window.clearInterval(InterValObj);
}
},1000);
getCode(); // 获取验证码
});