IndexedDB 与您的基本 URL 相关联
如果您更改应用名称或config.xml 中的基本 URL(内容 src),您将无法访问之前的。
首先,我正在使用 localforage 库和 cordova sqlite 插件来消除浏览器错误和实现细节。 iOS 可能会引起一些头痛,请注意
我在config.xml的内容输入:
<content src="index.html" />
我的相关插件相关条目in config.xml:
<plugin name="cordova-plugin-sqlite-2" spec="~1.0.4" />
<plugin name="cordova-plugin-crosswalk-webview" spec="~2.1.0">
<variable name="XWALK_VERSION" value="21+" />
<variable name="XWALK_LITEVERSION" value="xwalk_core_library_canary:17+" />
<variable name="XWALK_COMMANDLINE" value="--disable-pull-to-refresh-effect" />
<variable name="XWALK_MODE" value="embedded" />
<variable name="XWALK_MULTIPLEAPK" value="false" />
</plugin>
这是我在 Javascript 应用程序中的数据库初始化函数(它返回一个承诺):
function initDB() {
let driver = [localforage.INDEXEDDB, localforage.WEBSQL]
//force shim
if (platform() === constants.PLATFORM_IOS) {
if (window.sqlitePlugin) {
//WEBSQL shim throgh sqlite2
window.openDatabase = window.sqlitePlugin.openDatabase
}
driver = localforage.WEBSQL
}
let opts = {
driver: driver,
name: constants.DBName + '_forage',
version: constants.appVersion,
size: 4980736
}
localforage.config(opts)
let stores = {
state: localforage.createInstance({storeName: 'state'}),
api_cache: localforage.createInstance({storeName: 'apiCache'})
}
const keys = Object.keys(stores)
let p = new Promise((res, rej)=> {
let r = 0;
function check() {
r++
if (r === keys.length) {
res(stores)
}
}
keys.forEach(k=>stores[k].ready(check))
})
return p
}
localforage 可以在这里找到:https://github.com/localForage/localForage.git