Windows IndexedDB查看所有数据库和对象存储

Windows IndexedDB查看所有数据库和对象存储,windows,windows-store-apps,winjs,indexeddb,Windows,Windows Store Apps,Winjs,Indexeddb,我在Windows8应用程序中使用IndexedDB,我对这两种应用程序都很陌生。我已经能够成功地从对象存储中创建、读取、更新和删除对象,并创建了一些数据库和一些对象存储。我的问题是如何列出所有对象存储和数据库?我创建了一些不需要的伪造的,我想清理一下,但是我记不起它们的名字了。也许这是一种肛门保留,但似乎应该可以列出所有数据库和存储。谢谢 编辑2018此答案不再适用: webkitGetDatabaseNames()在chrome 60中不受欢迎 在Chrome webkit中有一个函数可以

我在Windows8应用程序中使用IndexedDB,我对这两种应用程序都很陌生。我已经能够成功地从对象存储中创建、读取、更新和删除对象,并创建了一些数据库和一些对象存储。我的问题是如何列出所有对象存储和数据库?我创建了一些不需要的伪造的,我想清理一下,但是我记不起它们的名字了。也许这是一种肛门保留,但似乎应该可以列出所有数据库和存储。谢谢

编辑2018此答案不再适用:

webkitGetDatabaseNames()在chrome 60中不受欢迎


在Chrome webkit中有一个函数可以返回所有数据库名称,该函数从Chrome 60()起不再可用:

还有另一个功能,它列出了在所有浏览器中工作的单个数据库中的所有对象存储:

indexedDB.open(databaseName).onsuccess = function(sender, args) 
{ console.log(sender.target.result.objectStoreNames); };

目前无法枚举中的现有数据库。Windows 8应用程序使用IE,它不提供非标准的
webkitGetDatabaseNames
方法。您可以使用清除数据库


在标准中使用实例的方法定义了数据库中的存储列表。

因为所有其他主题在这里都作为副本引用。在Chrome中,您可以在
Developer Tools>Application>Storage
中查看和删除所有创建的数据库


要查看IndexedDB内部构件:
chrome://indexeddb-internals/

在撰写本文[chrome 72]时,您可以使用浏览器控制台中的以下命令列出所有数据库。本质上,
indexedDB.databases()
是一个
承诺
。您可以使用它以数组的形式获取所有数据库的列表。在数组上运行循环以获取数据库的名称

indexedDB.databases().then(r => console.log(r))

希望这有助于纠正错误,我认为使用getDatabaseNames方法会很危险。通过这种方式,黑客可以轻松搜索客户端上现有的数据库。@KristoDegrave不,这不是问题,因为您不能跨域访问indexedDB。@user1133275同源策略不一定能保护您免受攻击者通过XSS访问它的攻击。如果他们通过SQL注入之类的方式将脚本注入到您的页面中,他们的脚本将在页面中本地运行,并能够访问它,然后将该信息发送到其他地方。
indexedDB.databases()
也可以在ChromeMDN引用中以编程方式使用:。注意:浏览器支持有限。
indexedDB.databases().then(r => console.log(r))