我需要删除我所有的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)
发布于 2019-02-19 18:34:33
在铬合金上使用
window.indexedDB.databases().then((r) => {
for (var i = 0; i < r.length; i++) window.indexedDB.deleteDatabase(r[i].name);
}).then(() => {
alert('All data cleared.');
});发布于 2017-09-04 23:37:41
用于获取名称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:据我所知,应该使用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和Chrome26.0.1410.43上运行。
Technique 2从理论上讲,要删除Chrome中的IndexedDB,您只需:
在Windows中,该文件位于以下位置:
%USERPROFILE%\AppData\Local\Google\Chrome\User Data\Default\IndexedDB
在Mac上,执行以下操作:
在Mac上,该文件夹位于以下位置:
/Users/[USERNAME]/Library/Application Support/Google/Chrome/Default/IndexedDB/在Linux上,该文件夹位于:
/home/[USERNAME]/.config/google-chrome/Default/IndexedDB/发布于 2021-07-11 22:01:21
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);
})https://stackoverflow.com/questions/46040005
复制相似问题