我一直在尝试在打包的应用程序中实现一个似乎不起作用的本地数据库。
我尝试使用PouchDB,它是IndexedDB上的一层,然后我尝试使用原生的IndexedDB API。两者都不起作用,我收到相同的消息:An attempt was made to break through the security policy of the user agent.
我用Google搜索了打包应用的数据库方法,但只找到了有关如何使用FileSystem API的信息。
任何指向Chrome打包应用上的数据库实施的链接都会非常有用(或者如果我做错了就告诉我。)
启动IndexedDB的示例代码:
idbSupported = false;
db = '';
if("indexedDB" in window) {
idbSupported = true;
}
if(idbSupported) {
var openRequest = indexedDB.open("test",1);
openRequest.onupgradeneeded = function(e) {
console.log("Upgrading...");
}
openRequest.onsuccess = function(e) {
console.log("Success!");
db = e.target.result;
}
openRequest.onerror = function(e) {
console.log("Error");
console.dir(e);
}
}
清单文件中的权限
"permissions": ["http://*/*", "https://*/*","storage","fileSystem"]
答案 0 :(得分:3)
也许尝试以下权限:
"permissions": ["storage", "<all_urls>", "unlimitedStorage"]
答案 1 :(得分:2)
也许您使用的是某些早期版本的Chrome,但我可以在没有任何权限的情况下使用IndexedDB,因为它不是Chrome平台API。我的应用是一款普通的Chrome应用 - 没有额外的沙盒。我不理解你的评论,所以也许你有它的工作。如果是这样,那么发布答案并标记它以便这个线程被正确包装将会很好。
答案 2 :(得分:2)
您必须为manifest.json
内部提供无限存储空间要查看chrome indexeddb应用程序的完整脱机实现(本地),请根据HTML5Rocks做的文章,查看此github项目