删除所有indexedDB

问题描述 投票:6回答:2

我需要删除所有我的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)

javascript indexeddb
2个回答
4
投票

获取名称qazxsw poi的函数调用已弃用。请参阅以下参考:

indexedDB.webkitGetDatabaseNames

也意图弃用:IDBFactory webkitGetDatabaseNames

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

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

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

据我所知,人们应该使用Technique 1:

indexedDB.deleteDatabase

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

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");
};

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

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

在Windows中,该文件位于:

Technique 2

在Mac上,执行以下操作:

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

在Mac上,该文件夹位于:

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

在Linux上,该文件夹位于:

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

2
投票

用于铬

/home/[USERNAME]/.config/google-chrome/Default/IndexedDB/
© www.soinside.com 2019 - 2024. All rights reserved.