V2EX › JavaScript
chrome ext manifest v3 的 service worker (Inactive) 问题
By jchnxu at 2022 年 12 月 3 日 · 3530 次点击https://stackoverflow.com/questions/66618136/persistent-service-worker-in-chrome-extension
这里的方案基本都试过一遍,感觉都没有完全解决这个问题,进程总是过一段时间就被杀掉了。有人解决过这个问题么?
这里的方案基本都试过一遍,感觉都没有完全解决这个问题,进程总是过一段时间就被杀掉了。有人解决过这个问题么?
10 条回复 • 2022-12-05 23:32:18 +08:00
|
1
jchnxu OP |
|
2
solobat 2022 年 12 月 3 日
同遇这问题,我是通过新标签页打开的时候由 content 向 background 发起一次请求来尝试激活,从而达到基本可用的程度。
|
|
4
kidlj 2022 年 12 月 3 日
background scripts persistent 的目的是什么,是要保存状态或缓存吗?如果是的话,可以把它做成无状态的,把状态写进 local storage ,service worker 启动的时候读取状态。
|
|
5
jchnxu OP @kidlj 好问题,我是做了一个网页黑名单,符合某些规则的网页就不让打开。所以基本上只要 onActivated & onUpdated 正常 fire 就能满足我的需求。
现在的问题是,如果 service worker inactive 这两函数就不会 fire 了 |
|
6
kidlj 2022 年 12 月 3 日
|
|
8
solobat 2022 年 12 月 3 日
@jchnxu 不是,https://github.com/solobat/iHelpers/blob/master/src/pages/background/index.ts#L202
https://github.com/solobat/iHelpers/blob/master/src/pages/background/index.ts#L218 你看这两行:在 background 通过 chrome.runtime.onMessage 监听来自 content script 的消息,在回调里去做一些初始化的工作 -- 因为新页面打开的时候,我总会让 content script 向 background 发出消息,从而可以让初始化工作被执行。 我遇到的问题场景是,在任一页面里无法保证右键菜单命令的可用性,所以想出这种办法,不是很完美,但勉强可用。不一定满足你的需求。 |
推荐关注
› Meteor
› JSLint - a JavaScript code quality tool
› jsFiddle
› D3.js
› WebStorm
推荐书目
› JavaScript 权威指南第 5 版
› Closure: The Definitive Guide

