Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在IOS中实现IndexDB_Ios_Html_Cordova_Indexeddb_Polyfills - Fatal编程技术网

如何在IOS中实现IndexDB

如何在IOS中实现IndexDB,ios,html,cordova,indexeddb,polyfills,Ios,Html,Cordova,Indexeddb,Polyfills,我正在使用phonegap开发一个移动应用程序,最初我是使用WEBSQL开发的,但现在我计划将其移动到INDEXDB上。问题是它在IOS上没有直接的支持,所以在做了大量的研发后,我知道使用IndexedDB Polyfil,我们也可以在IOS上实现它 由于没有足够的文档,我无法找到除此之外的任何其他解决方案/api,请帮助我如何实现这一点 我已经在safari 5.1.7上对此进行了测试 下面是我的代码和错误图像 var request1 = indexedDB.open(dbName, 5

我正在使用phonegap开发一个移动应用程序,最初我是使用WEBSQL开发的,但现在我计划将其移动到INDEXDB上。问题是它在IOS上没有直接的支持,所以在做了大量的研发后,我知道使用IndexedDB Polyfil,我们也可以在IOS上实现它

由于没有足够的文档,我无法找到除此之外的任何其他解决方案/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);
};

一次瞎猜 可能您的dbName包含WebSQL数据库名称的非法字符。polyfill不会以任何形式翻译数据库名称。因此,如果您创建一个名为my test的数据库,它将尝试创建一个名为my test的WebSQL数据库。这个名称对于IndexedDB数据库是可以接受的,但是在WebSQL中,您会因为-字符而遇到麻烦。因此,数据库名称必须同时匹配IndexedDB和WebSQL名称约定

... 否则,请使用调试器 你可以在警报上设置一个断点。。。;行并使用调试器查看evt对象内部。通过这种方式,您可以获得有关错误本身的更多信息,或者与我们共享更多信息

为此,请在Safari高级设置中启用“开发”菜单,点击F10并进入“开发人员”>“开始调试JavaScript”类似的内容,我的Safari使用的是另一种语言。现在打开开发者窗口中的脚本选项卡,选择脚本并通过单击行号设置断点。重新加载页面,它应该在错误回调中停止,您可以在那里检查evt对象


如果这没有帮助,您可以获取polyfill的非精简版本,并尝试在其打开函数周围设置一些断点以查找此错误的来源。

您可以尝试我的开源库。它可以在iOS和Android上运行

在WebSQL标准中,它注意到任何字符串都是有效的DB名称。尽管这是任何人的猜测,但在实现上是明智的。