在 webView 和 CordovaWebView android 之间共享 localStorage
Posted
技术标签:
【中文标题】在 webView 和 CordovaWebView android 之间共享 localStorage【英文标题】:share localStorage across webView and CordovaWebView android 【发布时间】:2014-10-25 18:42:41 【问题描述】:我正在尝试在 webView 和 CordovaWebView 之间共享活动中的数据。 CordovaWebView 当然使用 webView,这就是为什么我不明白为什么存储在我的 phoneGap 应用程序的 localStorage 中的数据在简单的 webView 中不可见,它从与主应用程序相同的位置加载 html 页面。我已经调查过 CordovaWebView 存储的数据存储在文件 /app_webview/Local Storage/file__0.localstorage 中,数据存储在 webView 类存储在文件 /app_webview/Local Storage/__0.localstorage 中,这就是我无法访问数据的原因。 我正在将存储在 localStorage 中的数据的脚本加载到 webView,如下所示:
webView.loadUrl("file:///android_asset/www/script.html");
CordovaWebView 中的主页面加载方式相同:
void loadUrlNow(String url)
if (LOG.isLoggable(LOG.DEBUG) && !url.startsWith("javascript:"))
LOG.d(TAG, ">>> loadUrlNow()");
if (url.startsWith("file://") || url.startsWith("javascript:") || Config.isUrlWhiteListed(url))
super.loadUrl(url);
网址在哪里
file:///android_asset/www/index.html
那么为什么在 CordovaWebView 中 localStorage 保存在文件中
/app_webview/Local Storage/file__0.localstorage
在文件中的 webview 中
/app_webview/Local Storage/__0.localstorage
【问题讨论】:
【参考方案1】:不幸的是,Android 上 localStorage 的奇怪行为是故意的。您可以通过使用像这样的库来解决本机方面的问题(我自己没有尝试过):
https://github.com/didimoo/AndroidLocalStorage或者您可以使用 JavaScript 在打开 InAppBrowser 时使用 executeScript 参数填充 localStorage,并在关闭它时读取 localStorage。
http://docs.phonegap.com/en/edge/cordova_inappbrowser_inappbrowser.md.html#executeScript这适用于少量数据。但是,大量调试可能会很烦人。
【讨论】:
以上是关于在 webView 和 CordovaWebView android 之间共享 localStorage的主要内容,如果未能解决你的问题,请参考以下文章
在 webview_flutter 中启用捏合和缩放,在哪里添加代码片段 [this.webView.getSettings().setBuiltInZoomControls(true);]