javascript - 如何从 Chrome 扩展服务 worker 中使用 IndexedDB

标签 javascript service-worker indexeddb chrome-extension-manifest-v3

我“高兴地”将我的一些 Chrome 扩展重建为 MV3。但是我卡住了,因为我不明白如何使用 索引数据库 来自服务人员。
更具体地说,我没有找到任何从 JS 服务 worker 脚本访问 IndexedDB 的工作示例。
引用 this page ,我曾经像这样打开一个数据库:

var idb = window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB || window.shimIndexedDB;
var dbName = "DatabaseName";
var open = idb.open(dbName, 1);
但众所周知,在 MV3 中,服务 worker 无法再访问窗口。

To put it simply, background pages provide extension authors with an environment that lives independent of any other window or tab.


(https://developer.chrome.com/docs/extensions/mv3/migrating_to_service_workers/#state)
我该怎么做?
感谢您的帮助、时间和耐心。周末愉快!

最佳答案

答案比我想象的要简单。
indexedDB 在 service worker 中使用时已经定义好了,不需要和 window 对象关联。它可以立即使用。

var dbName = "DatabaseName";
var open = indexedDB.open(dbName, 1);
我会留下这个问题,以防其他人有同样的疑问。

关于javascript - 如何从 Chrome 扩展服务 worker 中使用 IndexedDB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71451848/

相关文章:

reactjs - 更改路线时更新单页应用程序上的 "service-worker.js"

javascript - 查看服务 worker 内部的请求是否成功

Angular 推送通知 - 避免存储重复的订阅对象

local-storage - IndexedDB 在 Chrome 应用程序中的持久性如何

javascript - localForage 使用 WebSQL web IndexedDB 可用

javascript - JQM点击事件委托(delegate): Multiple result for Datepicker with JQM Datebox & SimpleDialog

javascript - 如何从异步调用返回响应?

javascript - 对于来自 Node.js 数组的每个请求

javascript - 如何为 Angular 分页自定义模板赋值?

javascript - 有没有办法阻止 Web Storage 和 IndexedDB 将模式作为来源的一部分?