javascript-IndexedDB.open在Safari iOS 8.1.1上返回null,并在Cordova上暂停执行.在iOS 8.1.2上甚至更糟

我知道iOS中IndexedDB的实现很麻烦,就像不同表之间的共享ID一样.但是,它对我根本不起作用.我正在尝试为应该使用IndexedDB的iOS开发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日志,但由于请求变量为null,它会在下一行崩溃.在iOS 8.1.2上运行时,它在open()调用上崩溃,并显示一条日志:

SecurityError: DOM Exception 18: An attempt was made to break through the security policy of the user agent

什么$@#%!正在进行?我看到有人抱怨错误的行为,但我什至无法打开数据库,这是正常现象还是什么?

解决方法:

遗憾的是,UIWebView不支持indexedDB

http://www.sencha.com/blog/apple-shows-love-for-html5-with-ios-8

>

IndexedDB was added to iOS 8 Safari and “WKWebView”

>

IndexedDB is not available in iOS 8 “UIWebView” or Home screen apps

但是您可以尝试使用WKWebView cordova插件
http://devgirl.org/2014/11/10/boost-your-ios-8-mobile-app-performance-with-wkwebview/

上一篇:怎样绘制一条线段


下一篇:教你如何利用canvas画布绘制哆啦A梦