移动端倒计时(坑) · JayLee

百般思念 提交于 2020-02-10 01:26:52

记今天遇到的bug,倒计时在移动端(微信页面)上运行的时候,当页面被打开,手机锁屏的时候,倒计时的Js代码会滞后甚至停止

之前的代码:

123456789101112131415161718192021222324
<body><span></span>分<span></span>秒<script>    function (val1,val2){        var min = document.getElementsByTagName("span")[0];        var sec = document.getElementsByTagName("span")[1];        var t = setInterval(function(){            val2--;            if(val2<0){                val2==59;                val1 --;            }else if(val1==0&&val2==0){                clearInterval(t)            }            min.innerText = val1;            sec.innerText = val2;        },1000)    }    time(0,10);</script></body>

之后的代码:

1234567891011121314151617181920212223242526
<body><span></span>分<span></span>秒<script>    function (val1,val2){        var min = document.getElementsByTagName("span")[0];        var sec = document.getElementsByTagName("span")[1];        var a = parseInt(val1*60+val2);         var render = parseInt(new Date().getTime()/1000)+a;//倒计时停止的秒数        var t = setInterval(function(){            var new_val = render-parseInt(new Date().getTime()/1000);//实时的时间差            var num1 = parseInt(new_val/60);//获得分钟数            var num2 = parseInt(new_val%60);//获得秒数            if(num1==0&&num2==-1){                clearInterval(t)            }else{                min.innerText = num1;                sec.innerText = num2;            }        },1000)    }    time(0,10);</script></body>

前后的代码差别就是,之前的代码时间逻辑自己书写,包括秒数的跳动和时间单位的转化,后面的是将逻辑让程序换算。导致在移动端手机锁屏的时候出现时间误差,后面则不会,因为时间都是实时获取到的。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!