我正在使用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);
};
答案 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。