从弹出窗口重新激活 Service Worker.onload

问题描述 投票:0回答:1

我正在开发一个 chrome 扩展,其中服务工作人员完成所有繁重的工作(功能、身份验证等),弹出窗口处理 UI。它基本上是这样工作的:弹出脚本(popup.js)向软件发送一条消息,并根据响应显示不同的屏幕(界面)。本质上,软件监听两件事:消息和/或网络请求。软件代码如下:

(async () => {
  //put id here
  id = await chrome.storage.sync.get("myID");

  chrome.webRequest.onHeadersReceived.addListener(callback, filter, []);

  //accept message from popup asking for login status
  chrome.runtime.onMessage.addListener((req, _, sendResponse) => { ...
    })
  // accepts message from popup for other functionality
  chrome.runtime.onMessage.addListener((req, _, sendResponse) => { ...
  });
})();
当没有足够快地触发侦听器的处理程序并且软件变为非活动状态时,

出现问题。当弹出窗口最终打开时,软件工作人员仍然处于非活动状态,并且没有人监听来自弹出窗口的消息。有没有办法重新激活软件并检查它当前是否处于活动状态。

我正在考虑创建一个持久的服务工作者,但这不是必需的,因为我只需要它在打开弹出窗口时处于活动状态。这将是我最后的手段。

javascript google-chrome-extension service-worker
1个回答
0
投票

我无法选择 woxxom 的答案作为答案,但删除等待解决了问题,即使服务工作者进入睡眠状态,它也会在收到消息时醒来。以下是 chrome 扩展文档中有关 Service Worker 生命周期的更多信息。

© www.soinside.com 2019 - 2024. All rights reserved.