在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/HTML5  HTML/ JS 倒計(jì)時(shí)問題,手機(jī)網(wǎng)頁后臺(tái)運(yùn)行時(shí),js會(huì)暫停

JS 倒計(jì)時(shí)問題,手機(jī)網(wǎng)頁后臺(tái)運(yùn)行時(shí),js會(huì)暫停

JS 倒計(jì)時(shí)問題,手機(jī)網(wǎng)頁后臺(tái)運(yùn)行時(shí),js會(huì)暫停。但是時(shí)間還在走,當(dāng)用戶返回主界面的時(shí)候倒計(jì)時(shí)就不準(zhǔn)了。這個(gè)有什么辦法解決嗎

回答
編輯回答
款爺

之前的答案理解錯(cuò)了。。。

2018年4月11日 15:02
編輯回答
熟稔

你這個(gè)問題可以試一下用這個(gè) js 來嘗試:https://github.com/leeenx/tim...

使用 timer.setTimeout & timer.setInterval 替代原生的 setTimeout & setInterval 試一下。具體的 API 如下: https://github.com/leeenx/tim...

這個(gè) timer 是用 RAF 模擬的。當(dāng) js 掛起時(shí),它也會(huì)掛起。

2018年4月7日 15:09
編輯回答
憶往昔

使用JS計(jì)時(shí)確實(shí)會(huì)存現(xiàn)這種問題,js腳本在瀏覽器出處后臺(tái)情況時(shí)是全部暫停執(zhí)行的,有些瀏覽器在tab切換也會(huì)暫停,包括setIntervalwebworker不管是同步還是異步,那么解決方案也有很多種,需要根據(jù)你的實(shí)際項(xiàng)目情況來定
比如一個(gè)很簡(jiǎn)單的30秒倒計(jì)時(shí)任務(wù),后臺(tái)js停止執(zhí)行,但系統(tǒng)時(shí)間是不會(huì)停止的。建議使用系統(tǒng)時(shí)間做比對(duì),簡(jiǎn)碼如下

let st = Date.now(),
    i = 0,
    itv = setInterval(()=>{
        i = ~~((Date.now() - st)/1000);
        if(i >= 3){
            clearInterval(itv)
            alert('time over')
        }
    },1000);
2017年4月20日 19:20
編輯回答
女流氓

多一種思路希望能開闊以下、可能變復(fù)雜了、
記錄每次登錄進(jìn)來的時(shí)間、再運(yùn)算

2017年2月8日 05:48
編輯回答
你的瞳

我測(cè)試過用webworker去開定時(shí)器是不會(huì)停的,提供一個(gè)思路而已

2017年11月7日 17:01
編輯回答
囍槑

有個(gè)visibilitychange事件,瀏覽器標(biāo)簽頁被隱藏或顯示的時(shí)候會(huì)觸發(fā).隱藏時(shí)記錄時(shí)間戳,顯示時(shí)記錄時(shí)間戳,求二者之差/1000得到離開時(shí)間。
這是我的想法,沒測(cè)試過,不知道能否成功,只是一個(gè)建議,你可以試一試

var start,end,s;
      document.addEventListener('webkitvisibilitychange', function () {
        if (document.webkitVisibilityState == 'hidden') {
            start = new Date().getTime();
            } else {
            end = new Date().getTime(); 
                s = ((end-start)/1000);    //為秒         
            }
        });
        document.addEventListener('mozvisibilitychange',function() {
            if (document.mozVisibilityState == 'hidden') {
                start = new Date().getTime();
            } else {
            end = new Date().getTime(); 
                s = ((end-start)/1000);
            }
        });

當(dāng)然只是倒計(jì)時(shí)的話你可以判斷visibilityState =='visible'里面重新獲取時(shí)間戳,重啟倒計(jì)時(shí)

2018年2月9日 19:47
編輯回答
憶當(dāng)年

記錄時(shí)間戳,每過一秒計(jì)算一次當(dāng)前時(shí)間和時(shí)間戳的差值

2018年4月2日 08:53
編輯回答
野橘

這個(gè)一般不是獲取當(dāng)前時(shí)間么,就算停了,等在運(yùn)行的時(shí)候還是從當(dāng)前時(shí)間倒計(jì)時(shí),也是準(zhǔn)確的啊

2017年3月13日 05:33
編輯回答
遲月

首先計(jì)算出預(yù)計(jì)結(jié)束時(shí)間。
假如需要倒計(jì)時(shí)10秒,那么結(jié)束時(shí)間就是 當(dāng)前時(shí)間戳 + 10秒。
網(wǎng)頁后臺(tái)運(yùn)行,重新打開的時(shí)候,用預(yù)計(jì)結(jié)束時(shí)間 - 當(dāng)前時(shí)間戳。

(非專業(yè)前端,想法僅供參考)

2018年4月29日 08:18