如何在IOS中实现IndexDB
我正在使用phonegap开发一个移动应用程序,最初我是使用WEBSQL开发的,但现在我计划将其移动到INDEXDB上。问题是它在IOS上没有直接的支持,所以在做了大量的研发后,我知道使用IndexedDB Polyfil,我们也可以在IOS上实现它 由于没有足够的文档,我无法找到除此之外的任何其他解决方案/api,请帮助我如何实现这一点 我已经在safari 5.1.7上对此进行了测试 下面是我的代码和错误图像如何在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
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名称。尽管这是任何人的猜测,但在实现上是明智的。