长时间不访问页面时内容脚本卸载

Content script unloads when page is not visited for a long time

我正在开发一个需要持续 运行ning 的浏览器扩展,即使在后台自动刷新之后也是如此。问题是,页面随机自动卸载并且脚本刚刚关闭。我需要找到一种方法来始终保持内容脚本打开。这是代码的一部分:

// content.js:
    function run(fn) {
      if(typeof(Worker) !== "undefined") {
        if(typeof(w) == "undefined") {
          w = new Worker(URL.createObjectURL(new Blob(['('+fn+')()'])));
        }
        w.onmessage = function(event) {
          if (isNaN(grabbedmin) && ID) {
            bump() // Note: the bump function refreshes in the page.
            w.terminate();
          }
          if ($("[href='/server/bump/" + ID + "']").text().includes("Bump")) {
            bump()
            w.terminate();
          }
          document.getElementById("bumpcount").innerHTML = "Autobumper Enabled: " + getCurrentTimestamp();
          if (numberwow == grabbedmin) {
            bump()
            w.terminate();
          }
        };
      }
    }

上面的代码基本上是由这个工人每分钟得到运行:

// content.js:
    const worker = run(function() {

      var i = 0;

      function timedCount() {
        i = i + 1;
        postMessage(i);
        setTimeout(function(){timedCount()},1000);
      }

      timedCount();
    });

有没有一种方法可以让 background.js 检测到 content.js 没有 运行ning(或者页面已卸载),然后重新加载它?

注意:您可以在此处找到脚本:https://github.com/Theblockbuster1/disboard-auto-bump

在浏览 docs 并查看示例后,我将其放在一起:

chrome.tabs.query({
  url: ["*://disboard.org/*dashboard/servers", "*://disboard.org/*dashboard/servers/"] // finds matching tabs
}, function(tabs) {
  tabs.forEach(tab => {
    chrome.tabs.update(tab.id,{autoDiscardable:false});
  });
});

chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab) {
  // checks if the browser automatically re-enabled autoDiscarding and disables it
  if (changeInfo.autoDiscardable == true) chrome.tabs.update(tabId,{autoDiscardable:false});
});