SetInterval冻结,没有错误消息,并且脚本响应某些侦听器

时间:2019-06-20 14:43:00

标签: javascript google-chrome-extension

我创建了一个简单的扩展程序,该扩展程序与setTimer一起作为倒数计时使用,它应该不断运行,执行其操作然后重新启动。我将倒数显示为扩展程序的标志文本,现在将其冻结在56:18(倒数从59:59开始-计时器冻结了一次,大约43分钟,所以时间似乎是随机的)他的第一行

我有一个用于更新的侦听器,它将检查徽章文本,如果为空,则启动计时器,否则在控制台中发送消息。如果刷新页面,我当前正在控制台中接收消息

此脚本位于后台脚本中,我尚未使其具有持久性(不知道其用途...),而在使用Excel时,我在后台使用了Chrome。

这是我倒计时的代码:

var DelaiProtect = 5
var Countdowntimer = 60
function Countdown() {
countDownDate = new Date().getTime()+(Countdowntimer*60*1000+5);
var x = setInterval(function() {
  var now = new Date().getTime();
  var distance = countDownDate - now;
  var days = Math.floor(distance / (1000 * 60 * 60 * 24));
  var hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
  var minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));
  var seconds = Math.floor((distance % (1000 * 60)) / 1000);
  if(seconds < 10 && seconds >= 0) {
      seconds = "0"+Math.floor((distance % (1000 * 60)) / 1000);
  }
  var BadgeCD = minutes + ":" + seconds;
  console.log("Countdown : "+ days + " jours "+hours+":"+minutes+":"+seconds)
  chrome.browserAction.setBadgeText({text: String(BadgeCD)});
  chrome.browserAction.setBadgeBackgroundColor({color: '#336699'});
  chrome.tabs.query({url: 'http://localhost:4848/sense/app/*'}, foundTabs => {
    if (foundTabs.length >= 1) {    
    }
    else {
        console.log("STOP plus d'onglets QlikSense")
        clearInterval(x);
        chrome.browserAction.setBadgeText({text: ""});
    }
  });
    var DepuisQd = now - lastUseQlik
if (distance < 1 && DepuisQd > (1000*DelaiProtect*60)) {
            clearInterval(x);
            chrome.browserAction.setBadgeText({text: "..."});
            chrome.tabs.query({url: 'http://localhost:4848/sense/app/*'}, foundTabs => {
            if (foundTabs && foundTabs.length) {
                foundTabs.forEach(tab => chrome.tabs.reload(tab.id));
                console.log("chargement effectué ! "+foundTabs.length)  
            }
        });
        Countdown();
        }
if (distance < (1000*60*DelaiProtect) && (distance+DepuisQd) < (1000*DelaiProtect*60)) {
    var minutes2 = Math.floor((((1000*DelaiProtect*60)-DepuisQd) % (1000 * 60 * 60)) / (1000 * 60));
    var seconds2 = Math.floor((((1000*DelaiProtect*60)-DepuisQd) % (1000 * 60)) / 1000);
    if(seconds2 < 10 && seconds2 >= 0) {
        var seconds2 = "0" + Math.floor((((1000*DelaiProtect*60)-DepuisQd) % (1000 * 60)) / 1000);
    }
    var BadgeCD2 = minutes2+":"+seconds2;
    chrome.browserAction.setBadgeText({text: String(BadgeCD2)});
    chrome.browserAction.setBadgeBackgroundColor({color: '#FF0000'});   
    }
}, 1000);
};

感谢您的帮助,因为我不知道先去哪里看看...

0 个答案:

没有答案