gpt4 book ai didi

javascript - chrome.extension.getBackgroundPage() 不适用于 manifest_version : 3

转载 作者:行者123 更新时间:2023-12-05 04:47:20 25 4
gpt4 key购买 nike

当我在 popup.js 中调用 backgroud.js 的函数时,如果 manifest_version 为 2,它就可以工作;如果 manifest_version 为 3,则不起作用。为什么?我该如何处理 manifest_version: 3


list .json

//version 2
{
"manifest_version": 2,
......
"background": {
"scripts": ["background.js"]
},
}

//version 3
{
"manifest_version": 3,
......
"background": {
"service_worker": "background.js"
},
}

popup.js

var bg = chrome.extension.getBackgroundPage();
var userName = bg.getUserName();
console.log(bg);

background.js

var userName = "John";
console.log("background");

function getUserName() {
return userName;
};

ma​​nifest_version 2 中的快照 enter image description here

ma​​nifest_version 3 中的快照 enter image description here

最佳答案

我搜索了一篇文章提到“做service worker的注意事项”,下面是第三条注意事项:

“它在不使用时终止,并在下一次需要时重新启动,因此您不能依赖 service worker 的 onfetch 和 onmessage 处理程序中的全局状态。如果有信息需要在重启后保留和重用,service workers确实可以访问 IndexedDB API。”

在问题case上面,我猜想当popup.js在Manifest-V3中调用background.js的函数时,background.js(as Service Worker)已经终止了,所以 popup.js 无法在 Manifest-V3 中调用 background.js(作为 Service Worker)的功能

https://developers.google.com/web/fundamentals/primers/service-workers

关于javascript - chrome.extension.getBackgroundPage() 不适用于 manifest_version : 3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68521873/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com