【问题标题】:How to clear WebView content?如何清除 WebView 内容?
【发布时间】:2019-10-24 22:32:14
【问题描述】:

我的应用中有一个WebView,宽度和高度为wrap_content

在我使用webview.loadData之前,它的宽度和高度都是0,在我加载一个页面(或者我使用webview.loadData)之后,它会显示一个网页。

我的问题是,如何清除 webview 以将其恢复到原始状态,就像以前一样 loadData

【问题讨论】:

标签: android


【解决方案1】:

我找到了这个答案,很有帮助:How do I clear a WebView's content before loading a page?

它是用于 Cocoa,但基本上只是调用:

webView.loadUrl("about:blank")

【讨论】:

  • 但是,通过使用这种方法,这似乎有行为,你需要按两次后退按钮(我认为额外的是空白页),以便浏览 webview 以前的内容。有一个讨论 stackoverflow.com/a/8939753/72437,但我觉得它不适合我。
  • @CheokYanCheng 我正在使用 webView.clearView()。我知道,它已被弃用,但这是我现在唯一可以接受的解决方案
【解决方案2】:

唯一完整的解决方案是检查 SDK 版本。

if (Build.VERSION.SDK_INT < 18) {
   webView.clearView();
} else {
   webView.loadUrl("about:blank");
}

【讨论】:

  • 这个解决方案帮助我使用webView.destroyDrawingCache(); 现在在所有版本上都可以正常工作。在不破坏绘图缓存的情况下,旧内容会在 4.4.+ androids 上闪烁
  • WebView.clearView() 已弃用,请改用 loadUrl('about:blank") 来源:developer.android.com/reference/android/webkit/…
  • 正如@HugoGresse 建议的那样,所有SDK 版本都使用webView.loadUrl("about:blank")。如果 Javascript 正在运行,webView.clearView() 通常无法正常工作,即使在 SDK 版本
【解决方案3】:

在 loadData 之前使用以下语句:

view.loadUrl("javascript:document.open();document.close();");

【讨论】:

  • 上面的脚本是上帝派来的.... about:blank 然后回去被搞砸了真是令人沮丧...
  • 比 about:blank 好得多,因为它不会创建历史记录。好技巧!
【解决方案4】:

WebView.clearView();

这将从 web 视图中清除视图。

【讨论】:

  • 警告:已弃用。使用 WebView.loadUrl("about:blank") 可靠地重置视图状态并释放页面资源(包括任何正在运行的 JavaScript)。
【解决方案5】:

我使用了 clearView() 方法,但是我现在遇到的问题是,当我紧随其后 loadData() 时,它似乎没有加载数据。

【讨论】:

    【解决方案6】:

    loadUrl("about:blank") 和 clearHistory() 怎么样?

    【讨论】:

    • 这是对答案的建议。信心不是 100%。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-14
    • 2019-05-12
    • 2010-12-19
    • 2019-11-13
    • 1970-01-01
    • 1970-01-01
    • 2014-07-09
    相关资源
    最近更新 更多