删除所有indexedDB

Fel*_*ira 6 javascript indexeddb

我需要删除所有我的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;
}
Run Code Online (Sandbox Code Playgroud)

webkitGetDatabaseNames()功能未定义.是否可以在不使用此方法的情况下删除所有IndexedDB?

PD:我想删除而不知道IndexedDB的名称,我需要从代码中删除(Javascript)

小智 10

在 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.');
});
Run Code Online (Sandbox Code Playgroud)


Roh*_*ing 6

indexedDB.webkitGetDatabaseNames不推荐使用获取名称的函数调用。请参阅以下参考资料:

https://github.com/dfahlander/Dexie.js/issues/532

还有一个要弃用的意图:IDBFactory webkitGetDatabaseNames

https://groups.google.com/a/chromium.org/forum/#!topic/blink-dev/2fUr-3wFPKI/discussion

您可以使用以下技术删除数据库:

Technique 1:
Run Code Online (Sandbox Code Playgroud)

据我所知,应该使用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");
};
Run Code Online (Sandbox Code Playgroud)

我可以确认它适用于 PhantomJS 1.9.0 和 Chrome 26.0.1410.43。

Technique 2
Run Code Online (Sandbox Code Playgroud)

理论上,在 Chrome 中删除 IndexedDB 所需要做的就是:

  1. 在 Chrome 中,转到选项 > 引擎盖下 > 内容设置 > 所有 cookie 和站点数据 > 找到您创建 IndexedDB 的域
  2. 点击“X”或单击“索引数据库”>“删除”

在 Windows 中,该文件位于:

%USERPROFILE%\AppData\Local\Google\Chrome\User Data\Default\IndexedDB

在 Mac 上,执行以下操作:

  1. 在 Chrome 中,转到“设置”(或 Chrome 菜单下的“首选项”)
  2. 点击“显示高级设置”(在页面底部)
  3. 转到“隐私”>“内容设置”>“所有 cookie 和站点数据”> 找到您创建 IndexedDB 的域
  4. 点击“X”或单击“索引数据库”>“删除”

在 Mac 上,该文件夹位于:

/Users/[USERNAME]/Library/Application Support/Google/Chrome/Default/IndexedDB/
Run Code Online (Sandbox Code Playgroud)

在 Linux 上,该文件夹位于:

/home/[USERNAME]/.config/google-chrome/Default/IndexedDB/
Run Code Online (Sandbox Code Playgroud)

  • 感谢您的回答,但我想在不知道 IndexedDB 名称的情况下删除,我需要从代码中删除。 (2认同)