javascript - IndexedDB.open 在 Safari iOS 8.1.1 上返回 null 并在 Cordova 上停止执行。在 iOS 8.1.2 上更差

标签 javascript ios cordova safari indexeddb

我知道 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 日志,但由于 request 变量正在运行,它在下一行崩溃了。在 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/

关于javascript - IndexedDB.open 在 Safari iOS 8.1.1 上返回 null 并在 Cordova 上停止执行。在 iOS 8.1.2 上更差,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27415998/

相关文章:

ios - UIWebView 在模拟器中加载但不在设备中

cordova - 我应该在Firebase Cloud Messaging中为授权 key 指定什么

cordova - 如何在 Xcode 8 中禁用 "automatically manage signing"

javascript - 卸载某些页面的js请求

javascript - 如何使用军事时间值创建时间选择器?

javascript - 小数范围0.025到99.999的正则表达式

javascript - 使用ExternalInterface获取swf文件函数名称?

javascript - Crockford 的原型(prototype)继承 - 用法

iphone - 实现授权

ios - 不能在 UICollectionViewCell 上设置阴影和圆角。一次只能做一件作品