删除所有indexedDB

xjreopfe  于 2022-12-09  发布在  IndexedDB
关注(0)|答案(3)|浏览(280)

我需要删除我的所有IndexedDB,目前我有:

const indexedDB = window.indexedDB || window.mozIndexedDB
  || window.webkitIndexedDB || window.msIndexedDB;
if (indexedDB.webkitGetDatabaseNames) {
  const bases = indexedDB.webkitGetDatabaseNames();
  bases.onsuccess = (event) => {
    const data = event.target.result;
    Object.values(data).forEach((db) => {
      indexedDB.deleteDatabase(db);
    });
    resolve();
  };
  bases.onerror = reject;
}

但是webkitGetDatabaseNames()函数是未定义的。是否可以不使用此方法删除所有IndexedDB?
PD:我想在不知道IndexedDB名称的情况下删除,并且我需要从代码中删除(Javascript)

6psbrbz9

6psbrbz91#

用于 chrome

window.indexedDB.databases().then((r) => {
    for (var i = 0; i < r.length; i++) window.indexedDB.deleteDatabase(r[i].name);
}).then(() => {
    alert('All data cleared.');
});
aiazj4mn

aiazj4mn2#

用于获取名称indexedDB.webkitGetDatabaseNames的函数调用已过时。请参阅以下参考:
https://github.com/dfahlander/Dexie.js/issues/532
还有一个意图是反对:IDBFactory webkit获取数据库名称
https://groups.google.com/a/chromium.org/forum/#!topic/blink-dev/2fUr-3wFPKI/discussion
您可以使用以下技术删除数据库:

Technique 1:

就我所知,应该使用indexedDB.deleteDatabase:

var req = indexedDB.deleteDatabase(databaseName);
req.onsuccess = function () {
    console.log("Deleted database successfully");
};
req.onerror = function () {
    console.log("Couldn't delete database");
};
req.onblocked = function () {
    console.log("Couldn't delete database due to the operation being blocked");
};

我可以确认它与PhantomJS 1.9.0和Chrome 26.0.1410.43一起工作。

Technique 2

从理论上讲,在Chrome中删除IndexedDB所需做的就是:
1.在Chrome浏览器中,进入“选项”〉“后台设置”〉“内容设置”〉“所有cookie和网站数据”〉找到您创建IndexedDB的域
1.点击“X”或点击“ IndexedDB ”〉删除
在Windows中,该文件位于以下位置:
%USERPROFILE%\AppData\Local\Google\Chrome\User Data\Default\IndexedDB
在Mac上,请执行以下操作:
1.在Chrome浏览器中,进入“设置”(或Chrome菜单下的“首选项”)
1.单击“显示高级设置”(位于页面底部)
1.转到“隐私”〉“内容设置”〉“所有cookie和网站数据”〉找到您创建IndexedDB的域
1.点击“X”或点击“ IndexedDB ”〉删除
在Mac上,该文件夹位于以下位置:

/Users/[USERNAME]/Library/Application Support/Google/Chrome/Default/IndexedDB/

在Linux上,该文件夹位于:

/home/[USERNAME]/.config/google-chrome/Default/IndexedDB/
kzmpq1sx

kzmpq1sx3#

indexedDB.databases().then(dbs => {
    var promises = dbs.map(db => {
        return new Promise((resolve, reject) => {
            var req = indexedDB.deleteDatabase(db.Name);
            req.onsuccess = resolve;
            req.onerror = reject;
            req.onblocked = reject;
        });
    });
    Promise.all(promises).then(console.log).catch(console.error);
})

相关问题