Javascript 铬延长报警/间隔一段时间后工作

Javascript 铬延长报警/间隔一段时间后工作,javascript,google-chrome-extension,Javascript,Google Chrome Extension,因此,我有一个问题,我需要打开一个非活动选项卡,偶尔设置它的URL,在未定义的时间段过去之前,一切都正常工作,然后似乎负责设置URL的警报随着所有后台脚本数据一起消失(变量被擦除),在我的清单中,我设置了权限“背景”但没有帮助,我也尝试过使用setInterval,但没有多大帮助,下面是一些代码: async function setGetJobAlarm() { // try { // chrome.alarms.clear("getAndExecuteJob

因此,我有一个问题,我需要打开一个非活动选项卡,偶尔设置它的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 get已打开,但出现以下错误:

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


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

后台脚本在30秒后自动终止,因此setTimeout/setInterval(设置超时时间/设置间隔时间)与那样或更长的延迟将永远不会运行

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


如果您的工作流确实需要1分钟以下的时间间隔,您将不得不人为延长服务人员的寿命,请参阅的第二部分。

后台脚本将在30秒后自动终止,因此setTimeout/setInterval(设置超时/setInterval)将永远不会运行

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


如果您的工作流程确实需要1分钟以下的时间间隔,您将不得不人为延长服务人员的寿命,请参阅的第二部分。

不要在一个问题中发布多个问题,请用正确的答案打开一个新问题。不要在一个问题中发布多个问题,请用正确的答案打开一个新问题。谢谢您的回答,尽管我不确定我是否回答了明白了,如果背景脚本在30秒后消失,如果我将periodInMinutes设置为1分钟会有什么好处?我确实使用了Alarm,正如你所看到的,我只是尝试了不同的方法,因为我无法让它工作,而且,如果我设置“background”,为什么背景脚本会终止“权限?
chrome
API当然会唤醒后台脚本。但是在chrome.alarms唤醒脚本后,您使用setTimeout/setInterval再等待30秒,然后脚本再次死机。至于
background
permission,它不是它的功能,请看它,它在这里不会有帮助。谢谢,我是chrome扩展的新手,不知道,我现在将在一个干净的背景文件中尝试它,至于setInterval,它就像一个选项B,它们没有一起运行,我只是对不起作用的内容进行评论,并尝试了不同的方法。当“醒来“后台脚本,后台脚本是否重新创建所有变量?假设我保存一个全局变量tabId并用0初始化它,当bg脚本被唤醒时,它会再次设置tabId=0吗?是的,它会重置每个变量。它每次从零开始运行后台脚本。您可以使用asynchronous
chrome.storage.local
谢谢您的回答,虽然我不确定我是否能理解您的回答,但是如果背景脚本在30秒后消失,如果我将periodInMinutes设置为1分钟,会有什么好处?正如您所看到的,我确实使用了Alarm,我只是尝试了不同的方法,因为我无法让它工作,而且,如果我设置了“后台”权限,为什么后台脚本会终止?
chrome
API当然会唤醒后台脚本。但是在chrome.alarms唤醒脚本后,您使用setTimeout/setInterval再等待30秒,然后脚本再次死机。至于
background
permission,它不是它的功能,请看它,它在这里不会有帮助。谢谢,我是chrome扩展的新手,不知道,我现在将在一个干净的背景文件中尝试它,至于setInterval,它就像一个选项B,它们没有一起运行,我只是对不起作用的内容进行评论,并尝试了不同的方法。当“唤醒”后台脚本,后台脚本是否重新创建所有变量?假设我保存一个全局变量tabId并用0初始化它,当bg脚本被唤醒时,它会再次设置tabId=0吗?是的,它重置每个变量。它每次从零开始运行后台脚本。您可以使用异步
chrome.storage.local