微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

background_worker.js 和 popup.js 中的全局常量 - Chrome 扩展 v3

如何解决background_worker.js 和 popup.js 中的全局常量 - Chrome 扩展 v3

我真的想与我所有的 js 文件,background_serviceworker.js 和 popup.js 共享常量。

const EXTENSION_MODE = {
    SEARCH_ONLY: "searchOnly",FILTER: "filter",OFF: "off"
}

将 vars 放入 background_serviceworker.js 并使用 getBackgroundPage() 对我来说似乎有点混乱(会使背景文件变得非常大)。

解决方法

我创建了 constants.js。

// constants.js
var EXTENSION_MODE = Object.freeze({
    SEARCH_ONLY: "searchOnly",FILTER: "filter",OFF: "off"
})

将其注入 background-service-worker 文件(使用此处的答案 Service worker registration failed. Chrome extension 实际查看注入脚本中的错误。否则,您只会看到非常普遍的错误)

// background.js
try { importScripts("constants.js"); } catch (e) { console.error(e); }

现在 popup.js 仍然无法访问它,因为它在孤立的上下文中运行。 所以我也将它注入到 popup.html(以老式的方式)。

 <!-- popup.html -->
<body>
    <some-other-elements/>
    <script src="./constants.js"></script>
    <script src="./popup.js"></script>
</body>

我可以在 popup.js 中使用它

// popup.js
console.log("popup: " + EXTENSION_MODE.FILTER);

附注。在内容脚本上(使用 chrome.scripting.executeScript 注入),我们不会使用它。我们需要开始使用存储和消息传递 https://developer.chrome.com/docs/extensions/reference/storage/ https://developer.chrome.com/docs/extensions/mv3/messaging/

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。