Joh*_* Wu 5 javascript google-chrome
当我在popup.js中调用backgroud.js的函数时,如果manifest_version为2,则它可以工作;如果manifest_version为3,则不起作用。为什么?我该如何处理manifest_version: 3
清单.json
//version 2
{
"manifest_version": 2,
......
"background": {
"scripts": ["background.js"]
},
}
//version 3
{
"manifest_version": 3,
......
"background": {
"service_worker": "background.js"
},
}
Run Code Online (Sandbox Code Playgroud)
弹出窗口.js
var bg = chrome.extension.getBackgroundPage();
var userName = bg.getUserName();
console.log(bg);
Run Code Online (Sandbox Code Playgroud)
背景.js
var userName = "John";
console.log("background");
function getUserName() {
return userName;
};
Run Code Online (Sandbox Code Playgroud)
清单版本 2 中的快照 在此处输入图像描述
清单版本 3 中的快照 在此处输入图像描述
我搜索到一篇文章提到“Service Worker需要注意的事项”,下面是第三个注意事项:
“它在不使用时终止,并在下次需要时重新启动,因此您不能依赖 Service Worker 的 onfetch 和 onmessage 处理程序中的全局状态。如果有需要在重新启动时保留和重用的信息,Service Worker 确实可以访问到 IndexedDB API。”
上面的问题案例,我猜测当 popup.js 调用 Manifest-V3 中的 background.js 的函数时,background.js(as Service Worker) 已经终止,因此 popup.js 无法调用 background.js(as Service) 的函数Manifest-V3 中的 Worker)
https://developers.google.com/web/fundamentals/primers/service-workers
| 归档时间: |
|
| 查看次数: |
3076 次 |
| 最近记录: |