📅  最后修改于: 2023-12-03 14:51:47.413000             🧑  作者: Mango
WebView 是 Android 中内置的浏览器控件,可以用来加载网页和展示 HTML 内容。有时我们需要从 WebView 中获取加载的 HTML 代码,以进行后续操作。本文将介绍如何从 WebView 中获取 HTML 代码。
通过设置 WebViewClient 的回调方法 onPageFinished
,可以在 WebView 加载完页面后获取到 HTML 代码。
webView.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
// 获取页面内容
String html = view.getOriginalUrl();
// TODO: 处理 HTML 代码
}
});
在 onPageFinished
方法中,可以通过 view.getOriginalUrl()
获取到当前 WebView 加载的页面的 HTML 代码。需要注意的是,这里获取到的 HTML 代码可能并不是完整的,因为可能存在异步加载的内容未完成的情况。如果需要获取完整的 HTML 代码,可以通过添加延迟等方法等待异步加载完成后再进行获取。
在 Android 4.4 及以上版本中,WebView 添加了新的方法 evaluateJavascript
,可以在页面加载完成后直接获取完整的 HTML 代码,而无需等待异步加载完成。
webView.post(new Runnable() {
@Override
public void run() {
webView.evaluateJavascript("document.documentElement.outerHTML", new ValueCallback<String>() {
@Override
public void onReceiveValue(String html) {
// TODO: 处理 HTML 代码
}
});
}
});
这里使用了 document.documentElement.outerHTML
作为 js 脚本,直接获取整个文档的 HTML 代码。
通过以上两种方法,我们可以很容易地从 WebView 中获取到 HTML 代码,以进行后续操作。需要注意的是,在使用 onPageFinished
方法获取 HTML 代码时需要注意异步加载的内容,而使用 evaluateJavascript
方法则需要注意 Android 版本的兼容性。