Chrome 分机报警/间隔一段时间后工作

Chrome extension alarm / interval working after a while

所以我遇到了这个问题,我需要打开一个 none 活动选项卡并偶尔将其设置为 URL,一切正常,直到经过一段未定义的时间,然后似乎负责设置 URL 的警报与所有后台脚本数据(变量被擦除)一起消失,在我的清单中我设置了“后台”权限但它没有帮助,我也试过使用 setInterval 但它没有多大帮助,这里有一些代码供您使用:

async function setGetJobAlarm() {
    // try {
    //     chrome.alarms.clear("getAndExecuteJobs");
    // } catch { }
    // chrome.alarms.create("getAndExecuteJobs", { periodInMinutes: 0.3 });
    // chrome.alarms.onAlarm.addListener(async (alarm) => {
    //     if (alarm.name == "getAndExecuteJobs") {
    //         try {
    //             await getAndExecuteJobs();
    //         }
    //         catch (err) {

    //             console.log(err);
    //         }
    //     }
    // });
    if (getAndExecuteJobs > 0) {
        clearInterval(getAndExecuteJobsInterval);
    }
    getAndExecuteJobsInterval = setInterval(async () => {
        try {
            await getAndExecuteJobs();
        }
        catch (err) {

            console.log(err);
        }
    }, 30000);
}

清单:

{
  "name": "aaaaa",
  "version": "0.0.1",
  "manifest_version": 3,
  "background": {
    "service_worker": "bgjob.js"
  },
  "permissions": [
    "tabs",
    "alarms",
    "activeTab",
    "background"
    //"identity",
    //"identity.email"
  ],
  "host_permissions": [
    "http://*/",
    "https://*/"
  ],
  "icons": {
    "16": "aaaaa.png",
    "48": "aaaa.png",
    "128": "aaaa.png"
  },
  "action": {

    "default_popup": "/popout/pop.html",
    "default_title": "aaaaa"
  },
  "content_scripts": [
    {
      "matches": [
        "http://*/*",
        "https://*/*"
      ],
      "js": [
        "jquery-3.6.0.slim.min.js"
      ]
    }
  ]
}

我不知道遗漏了什么,用谷歌搜索了很多但没有用,

第二个问题是,我正在尝试加载名为“hello.html”的简单扩展 html 文件,html 已打开,但出现此错误:

无法访问 URL“chrome-扩展名://locblcbeeombbgmpiofcnmhfimfpjipb/hello.html”的内容。扩展清单必须请求访问此主机的权限。

我尝试添加“chrome-extension://*/”但没有成功,谢谢!

后台脚本会在 30 秒后自动终止,因此 setTimeout/setInterval 这样或更长的延迟永远不会 运行。

删除 setTimeout/setInterval 并使用 chrome.alarms API 且 periodInMinutes 至少为 1,因为这是网络商店中已发布扩展所允许的最小间隔。

如果您的工作流程确实需要低于 1 分钟的间隔,您将不得不人为地延长 service worker 的生命周期,请参阅 的第二部分。