【问题标题】:localForage using WebSQL web IndexedDB availablelocalForage 使用 WebSQL web IndexedDB 可用
【发布时间】:2015-09-10 08:16:35
【问题描述】:

我正在使用 Ionic 框架构建一个 Cordova 应用程序。我使用angular-localForage 作为应用持久存储的本地数据库。

在开发过程中,我在 Windows 10 上使用 Google Chrome 45.0.2454.85 m 测试我的应用程序。angular-localForage 版本为 1.2.3,localForage 版本为 1.2.4。

我可以设置和检索数据没有问题。设置我正在使用的数据:

$localForage.setItem(myKey, myData).then(myCallbackFunction);

根据docs,localForage 应该在 IndexedDB 可用的情况下使用它,而对于不可用的浏览器则回退到 WebSQL。通过查看 Chrome 开发者工具中的资源,我可以看到它将我的数据存储在 WebSQL 中。

如果我将此代码放入我的控制器中,我会收到一条消息说 IndexedDB 可用:

if (!window.indexedDB) {
    window.alert("Your browser doesn't support a stable version of IndexedDB. Such and such feature will not be available.");
} else {
    window.alert("IndexedDB available.");
}

我的问题是,当我有 IndexedDB 可用时,为什么它在 Chrome 中使用 WebSQL?

【问题讨论】:

  • 如果设置驱动程序是 localforage.INDEXEDDB,可以检查您的 localforage 配置
  • 检查他们如何测试对 IndexedDB 的支持,不仅仅是 window.indexedDB。 github.com/mozilla/localForage/blob/master/src/…
  • 为回复干杯。虽然在代码中看不到任何使其无法在 Chrome 中运行的内容...

标签: javascript angularjs google-chrome indexeddb localforage


【解决方案1】:

这个问题其实很隐秘。

TLDR; Apple 的 UIWebView 不支持 indexedDB。关闭 Chrome 的 iOS 模拟器以查看 indexedDB 是否正常工作。

我假设您正在使用 Chrome 开发工具模拟 iPhone。好吧,这种欺骗实际上非常有效,因为如果您将 localForage 配置为专门使用 indexedDB,它现在会发出错误。

如果您想享受片刻的深度厌倦并查看 indexedDB 的运行情况...请关闭仿真,以便使用 Chrome 自己的用户代理。然后就可以了。

来源:我必须自己处理这些废话。这是一个非常糟糕的开发者体验。哈哈。

【讨论】:

    【解决方案2】:

    我的猜测是 websql 被视为首选,因为它的存在时间比 indexeddb api 长,并且 chrome 比 indexeddb 更早地推送 websql。由于 chrome 仍然支持 websql,所以在 indexeddb 之前需要 websql。

    【讨论】:

    • 嗯,localForage默认优先级是IndexedDB,尝试回退到websql,或者回退到localStorage。
    • 没有。 OP 很可能使用 Chrome 的 Devtools 来欺骗 Mobile Safari。所以localForage 在技术上是正确的,尽管他设置了驱动程序优先级 (localForage.setDriver())。
    猜你喜欢
    • 2016-02-13
    • 2014-09-10
    • 2014-03-15
    • 1970-01-01
    • 2021-10-13
    • 2011-03-10
    • 2012-04-19
    • 2018-03-07
    • 1970-01-01
    相关资源
    最近更新 更多