Webview localStorage.setItem(javascript)不能在加载url(android)之前设
Webview localStorage.setItem(javascript) cant set before load url(android)
在加载URL之前,我需要设置localStorage.setItem
。
然而,当我第一次加载URL时,什么也没有出现。如果我第二次刷新页面,它就会出现。如何在第一次加载页面时设置localStorage.setItem
?
webView.getSettings().setDomStorageEnabled(true);
webView.getSettings().setJavaScriptEnabled(true);
//set token and role
webView.setWebViewClient(new WebViewClient() {
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
webView.loadUrl(
"javascript:" +
"localStorage.setItem('token', '" + token + "');");
}
});
webView.setWebChromeClient(new WebChromeClient() {
private ProgressDialog mProgress;
@Override
public void onProgressChanged(WebView view, int progress) {
try {
if (mProgress == null) {
mProgress = new ProgressDialog(getActivity());
if (!getActivity().isFinishing()) {
mProgress.show();
}
}
mProgress.setMessage(getString(R.string.loading) + String.valueOf(progress) + "%");
if (progress == 100) {
mProgress.dismiss();
mProgress = null;
}
} catch (Exception e) {
Log.e("item menu", e.toString());
}
}
});
webView.loadUrl(url);
正如您所说,本地存储数据第一次没有出现…我也遇到过同样的问题....这就是解决方案。放置本地存储。settitem (key, val)在onPageStarted()和onPageFinished()方法中。
公共类AppWebViewClients扩展WebViewClient {private ProgressBar;
public AppWebViewClients(ProgressBar progressBar) {
this.progressBar=progressBar;
progressBar.setVisibility(View.VISIBLE);
}
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
// TODO Auto-generated method stub
view.loadUrl(url);
return true;
}
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
webview.evaluateJavascript("window.localStorage.setItem('"+ key1 +"','"+ val1 +"');", null);
webview.evaluateJavascript("window.localStorage.setItem('"+ key2 +"','"+ val2 +"');", null);
} else {
webview.loadUrl("javascript:localStorage.setItem('"+ key1 +"','"+ val1 +"');");
webview.loadUrl("javascript:localStorage.setItem('"+ key2 +"','"+ val2 +"');");
}
}
}
@Override
public void onPageFinished(WebView view, String url) {
// TODO Auto-generated method stub
super.onPageFinished(view, url);
progressBar.setVisibility(View.GONE);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
webview.evaluateJavascript("window.localStorage.setItem('"+ key1 +"','"+ val1 +"');", null);
webview.evaluateJavascript("window.localStorage.setItem('"+ key2 +"','"+ val2 +"');", null);
} else {
webview.loadUrl("javascript:localStorage.setItem('"+ key1 +"','"+ val1 +"');");
webview.loadUrl("javascript:localStorage.setItem('"+ key2 +"','"+ val2 +"');");
}
}
}
}
希望它能解决你的问题。谢谢你
相关文章:
- Android上URL方案的替代方案
- Android上的Chrome无法播放来自对象URL的录制音频
- 如何使用phonegap从android中的URL下载文件
- json在Android中对URL进行编码后未从服务器接收到
- 正在将数据URL(base64)保存到PhoneGap(android)上的文件中
- 无法使用json数据url在android中运行实时股票图
- 无法使用inAppBrowser cordova在android中打开pdf url
- 从 Android 中的 url 获取异步加载的 html(通过 ajax)
- 如何从MyApp Android打开Web浏览器应用程序的URL
- 复制URL并使用JavaScript / jquery粘贴到桌面,iOS和Android上的剪贴板按钮
- Android/ JavaScript - 在URL中传递数据
- 在 JavaScript mailto url 中的等号在 Android 上被解析
- jQuery Mobile URL在Android浏览器上将哈希(#)转换为%23
- <输入类型='文件'>提供了URL编码的文件名,导致Android本机浏览器上的FileRea
- 如何将我们的android应用程序与url连接,并将数据传递到此url
- 如何获取当前页面'使用JavaScript的Android WebView中的URL
- 正在检测从android应用程序调用的URL
- Android,数据url解码时base-64错误
- webview.url在某些android设备上不工作(在Titanium Appcelerator中)
- 快速隐藏iOS/Android URL栏