webview似乎只保留上一页的网址和滚动位置,而不是保留内容?我有一个包含json数据的主页面和一个子页面。主页面生成一些超链接,形成一些json数据,在新窗口中打开子页面。在笔记本电脑浏览器中,我只需要在新窗口中关闭子页面。但是在webview中,当我按下后退按钮时,它可以返回主页面,但它会重新加载而不保留以前的内容。如何在不重新加载的情况下让webview返回?
main.html with dynamic content
<a href='child.html' target=target="_blank"......
press back button, success go back, but the main page reload and lost dynamic content
我的代码如下:
webView.Settings.JavaScriptEnabled = true;
webView.Settings.DomStorageEnabled = true;
webView.Settings.DatabaseEnabled=true;
webView.Settings.DatabasePath = AppConfig.Path;
webView.SetWebViewClient(new HybridWebViewClient());
public override void OnBackPressed()
{
if (webView != null && webView.CanGoBack())
{
webView.GoBack();
GoBackFlag = true;
}
else {
base.OnBackPressed();
}
}
public override bool ShouldOverrideUrlLoading(WebView view, string url)
{
if (GoBackFlag)
{
GoBackFlag = true;
return false;
}
else {
view.LoadUrl(url);
}
return true;
}
public override void OnPageStarted(WebView view, string url, Bitmap favicon)
{
if (GoBackFlag)
{
GoBackFlag = false;
return;
}
}
感谢〜
答案 0 :(得分:2)
要记住的一件事是WebView不是一个完整的互联网浏览器。它是一个专门用于加载Web内容的View。如果您有一个WebView并且正在切换内容(包括返回),则必须每次都重新加载内容。
使用嵌入在其中的WebViews来研究使用不同的片段。这样,当您加载内容时,它应该保持加载(或缓存)。然后,您可以在WebView片段之间执行所有导航。
您还可以在一个活动中拥有多个WebView,并根据应在屏幕上显示的内容将可见性标记设置为GONE或VISIBLE。
答案 1 :(得分:0)
我有同样的问题。我通过在新活动中打开新的Webview进行修复。根据需要,新的Web视图可以是: