我知道iOS中的IndexedDB实现非常错误,就像不同表之间的共享ID一样。但它对我来说根本不起作用。我正在尝试为iOS开发一个应该使用IndexedDB的Cordova应用程序,所以我创建了以下代码:
window.indexedDB = window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB;
window.IDBTransaction = window.IDBTransaction || window.webkitIDBTransaction || window.msIDBTransaction;
window.IDBKeyRange = window.IDBKeyRange || window.webkitIDBKeyRange || window.msIDBKeyRange;
var request = window.indexedDB.open("mydata"); //also tried open("mydata", 1) with same result
console.log('OPEN DB')
request.onupgradeneeded = function() {...};
request.onsuccess = function() {...};
在Cordova应用程序中运行此代码段时,OPEN DB
打印未显示,执行卡在indexedDB.open
调用(无错误日志或任何内容)。我认为这可能是Cordova问题,所以我决定在普通的Safari浏览器中运行相同的代码,尽管它应该与Cordova一样只使用UIWebview,根据我的理解,应该使用与浏览器相同的webkit版本。
在Safari iOS 8.1.1
中运行时会打印OPEN DB
日志,但由于request
变量为null
,它会在下一行崩溃。在iOS 8.1.2
上运行时,它会在显示日志的open()
来电时崩溃:
SecurityError:DOM异常18:尝试突破用户代理的安全策略
$ @#%!正在进行?我看到有些人抱怨有错误的行为,但我甚至无法打开数据库,这是正常的还是什么?
答案 0 :(得分:3)
遗憾的是,UIWebView
不支持indexedDBhttp://www.sencha.com/blog/apple-shows-love-for-html5-with-ios-8
IndexedDB被添加到iOS 8 Safari和“WKWebView”
IndexedDB在iOS 8“UIWebView”或主屏应用
中不可用
但您可以尝试使用WKWebView cordova插件 http://devgirl.org/2014/11/10/boost-your-ios-8-mobile-app-performance-with-wkwebview/