乐闻世界logo
搜索文章和话题

如何从 webvew 中获取 html 内容?

5 个月前提问
3 个月前修改
浏览次数22

1个答案

1

要从 WebView 中获取 HTML 内容,可以通过几种方式。这些方法取决于您所使用的平台和开发环境。以下是几种常用的方法:

Android WebView

在 Android 中,您可以使用 WebViewevaluateJavascript 方法来注入 JavaScript 代码,从而获取当前页面的 HTML 内容。下面是一个示例:

java
webView.evaluateJavascript("(function() { return document.documentElement.outerHTML; })();", new ValueCallback<String>() { @Override public void onReceiveValue(String html) { // 在这里处理获取到的 HTML 内容 Log.d("HTML", html); } });

iOS WKWebView

在 iOS 中,使用 WKWebView 可以通过 evaluateJavaScript 方法注入 JavaScript 代码,获取页面的 HTML。下面是一个示例:

swift
wkWebView.evaluateJavaScript("document.documentElement.outerHTML.toString()", completionHandler: { (html: Any?, error: Error?) in if error == nil { if let htmlString = html as? String { // 在这里处理获取到的 HTML 内容 print(htmlString) } } })

UWP WebView

在 Universal Windows Platform (UWP) 应用中,可以使用 InvokeScriptAsync 方法执行 JavaScript 代码来获取 HTML 内容。示例如下:

csharp
string html = await webView.InvokeScriptAsync("eval", new string[] { "document.documentElement.outerHTML;" }); // 在这里处理获取到的 HTML 内容 Debug.WriteLine(html);

注意事项

  • 由于安全原因,以上方法通常仅适用于您自己加载的网页或者有权限控制的网页。对于跨域的内容,可能会受到同源政策(Same-Origin Policy)的限制。
  • 需要确保 WebView 控件已经加载完毕页面后才执行获取 HTML 的操作,否则可能会得到一个空的结果或不完整的 HTML。
  • 获取到的 HTML 是页面当时状态的快照,如果页面后续发生了变化(比如由 JavaScript 动态加载的内容),则不会反映这些变化。

在实际开发中,根据您的需求和平台的不同,需要选择合适的方法来实现。此外,要注意处理 JavaScript 代码执行的结果,可能会包括错误处理和异步操作的管理。

2024年6月29日 12:07 回复

你的答案