如何在IOS中实现IndexedDB

时间:2013-08-30 09:12:18

标签: ios html5 cordova indexeddb polyfills

我正在使用phonegap开发移动应用程序,最初我使用WEBSQL进行开发,但现在我计划在INDEXDB上移动它。问题是它没有直接支持IOS,所以做了很多R& D我开始知道使用 IndexedDB Polyfil 我们也可以在IOS上实现它

http://blog.nparashuram.com/2012/10/indexeddb-example-on-cordova-phonegap.html http://nparashuram.com/IndexedDBShim/

有些人可以帮我解决一下如何实现这一点,因为没有足够的文档供我这样做,除了这个我无法找出任何其他解决方案/ api

我在safari 5.1.7上测试了这个

以下是我的代码和错误图片

var request1 = indexedDB.open(dbName, 5);
request1.onsuccess = function (evt) {
    db = request1.result;
    var transaction = db.transaction(["AcceptedOrders"], "readwrite");
    var objectStore = transaction.objectStore("AcceptedOrders");
    for (var i in data) {

        var request = objectStore.add(data[i]);
        request.onsuccess = function (event) {

            //  alert("am again inserted")
            // event.target.result == customerData[i].ssn;
        };
    }

};
request1.onerror = function (evt) {
    alert("IndexedDB error: " + evt.target.errorCode);
};

Error Image

2 个答案:

答案 0 :(得分:0)

一个盲目猜测

也许您的dbName包含WebSQL数据库名称的非法字符。 polyfill不会翻译任何类型的数据库名称。因此,如果您创建一个名为my-test的数据库,它将尝试创建名为my-test的WebSQL数据库。此名称对于IndexedDB数据库是可接受的,但在WebSQL中,由于-字符,您将遇到麻烦。因此,您的数据库名称必须与IndexedDB WebSQL名称约定相匹配。

...否则使用调试器

您可以在alert(...);行上设置断点,并使用调试器查看evt对象。这样,您可以获得有关错误本身的更多信息,或者与我们分享更多信息。

为此,在Safari高级设置中启用开发菜单,点击F10并转到Developer > Start调试JavaScript(类似的东西,我的Safari使用不同的语言)。现在打开开发人员窗口中的“脚本”选项卡,选择脚本并通过单击行号设置断点。重新加载页面,它应该在错误回调中停止,您可以在其中检查evt对象。

如果这没有帮助,您可以获得polyfill的非缩小版本,并尝试在open函数周围设置一些断点以查找此错误的来源。

答案 1 :(得分:0)

您可以尝试我的开源库https://bitbucket.org/ytkyaw/ydn-db/wiki/Home。它适用于iOS和Android。