Google chrome (MV3 Chrome Extensions)如何有力地让服务人员保持活力?

Google chrome (MV3 Chrome Extensions)如何有力地让服务人员保持活力?,google-chrome,google-chrome-extension,service-worker,Google Chrome,Google Chrome Extension,Service Worker,从MV2迁移我的扩展对我来说是一件非常痛苦的事情。在触发诸如onMessage或OnStorage Changed之类的特定事件之前,如何防止扩展软件死亡?这是一个场景: 1-从SW向contentScript发送消息 2-等待contentScript完成操作 3-完成后,contentScript会将消息发送回SW 不幸的是,SW在步骤2和步骤3之间死亡。如何防止这种情况发生?不要发送单独的消息,而是使用单个消息周期 后台服务人员: chrome.tabs.sendMessagetabId,

从MV2迁移我的扩展对我来说是一件非常痛苦的事情。在触发诸如onMessage或OnStorage Changed之类的特定事件之前,如何防止扩展软件死亡?这是一个场景:

1-从SW向contentScript发送消息

2-等待contentScript完成操作

3-完成后,contentScript会将消息发送回SW


不幸的是,SW在步骤2和步骤3之间死亡。如何防止这种情况发生?

不要发送单独的消息,而是使用单个消息周期

后台服务人员:

chrome.tabs.sendMessagetabId,{foo:'bar'},响应=>{ //处理响应 }; 内容脚本:

chrome.runtime.onMessage.addListenermsg,发件人,sendResponse=>{ doSomethingAsynchronousmsg.thensendResponse; 返回true;//保持通道打开 };
这将使工作人员最多运行五分钟。如果您需要更多信息,或者确实希望发送单独的消息,请在循环开始时通过chrome.runtime.connect从内容脚本打开一个新连接,并每五分钟重复一次,直到工作完成。

不要发送单独的消息,而是使用单个消息循环

后台服务人员:

chrome.tabs.sendMessagetabId,{foo:'bar'},响应=>{ //处理响应 }; 内容脚本:

chrome.runtime.onMessage.addListenermsg,发件人,sendResponse=>{ doSomethingAsynchronousmsg.thensendResponse; 返回true;//保持通道打开 }; 这将使工作人员最多运行五分钟。如果您需要更多信息,或者您确实希望发送单独的消息,请在循环开始时从内容脚本中通过chrome.runtime.connect打开一个新连接,并每五分钟重复一次,直到工作完成