-1

我一直在尝试在似乎不起作用的打包应用程序中实现本地数据库。

我尝试使用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"]
4

3 回答 3

3

也许尝试以下权限:

"permissions": ["storage", "<all_urls>", "unlimitedStorage"]
于 2013-10-25T07:12:43.443 回答
2

也许您使用的是早期版本的 Chrome,但我可以在没有任何权限的情况下使用 IndexedDB,因为它不是 Chrome 平台 API。我的应用是普通的 Chrome 应用——没有额外的沙盒。我不明白你的评论,所以也许你有它的工作。如果是这样,最好发布答案并标记它,以便正确包装该线程。

于 2013-12-06T21:09:45.500 回答
2

您必须在 manifest.json 中提供无限存储空间

要查看基于 HTML5Rocks 的 chrome indexeddb 应用程序的完整离线实现(本地),请查看此 github 项目

https://github.com/abdullahc/Indexeddb-Chrome-App

于 2013-12-10T14:51:18.763 回答