2013-03-05 39 views
9

我在Windows 8應用程序中使用IndexedDB,對於兩者都很新穎。我已經能夠成功創建,讀取,更新,刪除對象庫中的對象,並創建了一對數據庫和一些對象庫。我的問題是如何列出所有的對象存儲和數據庫?我創建了一些不需要的僞造的東西,我想稍微清理一些東西,但我不記得它們的名字。也許這是肛門保留型,但似乎應該可以列出所有數據庫和商店。謝謝!IndexedDB查看全部數據庫和對象存儲

回答

11

目前還沒有在standard枚舉現有數據庫的方式。 Windows 8應用程序使用IE,它不提供非標準的webkitGetDatabaseNames方法。您可能可以使用options dialog in IE10清除數據庫。

列出數據庫中的商店是使用IDBDatabase實例的objectStoreNames方法在標準中定義的。

+1

正確,我認爲它會有一個getDatabaseNames方法是危險的。這樣黑客就可以輕鬆地在客戶端上搜索數據庫的存在。 – 2013-03-06 13:40:22

+1

@KristofDegrave不,這不是一個問題,因爲你不能跨域訪問索引數據庫。 – user1133275 2017-05-12 14:48:58

+1

@ user1133275同源策略不一定能保護您免受攻擊者通過XSS訪問它的危險。如果他們通過類似SQL注入的方式將腳本注入到頁面中,那麼他們的腳本將在頁面中本地運行,並能夠訪問它並將該信息發送到其他位置。 – 2017-05-13 10:25:43

17

在Chrome的WebKit的有這將返回所有數據庫名稱的功能,這個功能不再適用於Chrome 60(webkitgetdatabasenames)的:

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

還有是列出所有對象存儲在另一個函數這在所有的瀏覽器的單一數據庫:

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

['webkitGetDatabaseNames()'在Chrome 60中已棄用](https://developers.google.com/web/updates/2017/06/chrome-60-deprecations#remove_indexeddbwebkitgetdatabasenames) – 2017-10-02 05:43:16