我正在进行一个涉及使用IndexedDB的项目。由于我刚开始接触这项技术,因此需要手动删除indexedDB以便重新开始。
我已经找到了在Firefox中执行此操作的方法,但是我无法找到在Google Chrome中执行此操作的方法。
我尝试删除了这个文件夹的内容(我正在使用Mac):
{home}/Library/Application Support/Google/Chrome/Default/IndexedDB
但似乎Chrome仍然在任何地方保留着数据库,因此我无法重新开始。
我正在进行一个涉及使用IndexedDB的项目。由于我刚开始接触这项技术,因此需要手动删除indexedDB以便重新开始。
我已经找到了在Firefox中执行此操作的方法,但是我无法找到在Google Chrome中执行此操作的方法。
我尝试删除了这个文件夹的内容(我正在使用Mac):
{home}/Library/Application Support/Google/Chrome/Default/IndexedDB
但似乎Chrome仍然在任何地方保留着数据库,因此我无法重新开始。
我在Chrome中运行以下内容成功:
indexedDB.deleteDatabase('DB NAME')
理论上,在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/
另一种方法是在开发者控制台中执行此命令:
indexedDB.deleteDatabase("databaseName")
webkitGetDatabaseNames
来返回所有数据库的名称。window.indexedDB.webkitGetDatabaseNames().onsuccess = function(sender,args)
{
var r = sender.target.result;
for(var i in r)
indexedDB.deleteDatabase(r[i]);
};
Chrome -> 检查器窗口 -> 应用程序 -> 查看左侧菜单 -> 存储 -> IndexedDB。
请确保在您的应用程序页面上。此外,我认为Safari在7天后会过期IDB数据。
rm -rf ${HOME}/Library/Application\ Support/Google/Chrome/Default/IndexedDB/*
现在重新启动你的浏览器就行了。
由于我经常需要清除IndexedDB数据库,我已经在我的~./bash_profile中设置了一个别名。
alias purge-idb="rm -rf ${HOME}/Library/Application\ Support/Google/Chrome/Default/IndexedDB/*"
在控制台中输入以下代码段:
window.indexedDB.deleteDatabase(<你的数据库名称>)
要在 Chrome 的 OS X 版本中删除 IndexedDB:
1)在“首选项”中,展示高级设置,然后在“隐私”部分下点击“内容设置”按钮。
2)在“内容设置”弹出窗口中,在“Cookie”部分下点击“所有 Cookie 和站点数据”按钮。
3)在“Cookie 和站点数据”弹出窗口中,使用“搜索 Cookie”文本框查找源于 IndexedDB 的域名。
4)点击列表中的域名条目。
5)点击域名下列出的“indexed database”标签。
6)在 indexed database 的下拉详细信息中,点击“删除”按钮。
现在Chrome开发者工具中有一个选项可以删除应用程序的所有数据库,位于“应用程序/清除存储”下。
这可能有点过于复杂了,但在我试图删除我的idb时,我一直在这里。
最终我的解决方案基于mozilla的文档,但需要我首先关闭数据库。
对于我来说,在Javascript中,代码看起来像这样:
my_db_instance.close(function(e){console.log(e)});
var DBDeleteRequest = indexedDB.deleteDatabase("my_db_name");
// When i had the base open, the closure was blocked, so i left this here
DBDeleteRequest.onblocked = function(event) {
console.log("Blocked");
};
DBDeleteRequest.onerror = function(event) {
console.log("Error deleting database.");
console.log(event);
};
DBDeleteRequest.onsuccess = function(event) {
console.log("Database deleted successfully");
};