从加载的 WebView 中获取 HTML 代码 [重复]
Posted
技术标签:
【中文标题】从加载的 WebView 中获取 HTML 代码 [重复]【英文标题】:Get the HTML code from loaded WebView [duplicate] 【发布时间】:2013-10-31 09:17:33 【问题描述】:我有这样的事情
final WebView w=(WebView)findViewById(R.id.webView1);
w.loadUrl("http://somepage.com");
有什么方法可以在某个时刻获取 WebView 中显示的 html 页面? 我想把这个 html 页面作为字符串变量。
关键是我想在客户端执行javascript之后获取html代码...
有什么指导方针吗?
【问题讨论】:
我已经尝试过那个解决方案,但它对我不起作用,可能是android版本的问题...... 考虑到您刚刚接受了与副本相同的答案,我觉得您的回答令人惊讶。 好吧,人们说这是个愚蠢的问题,他们要求关闭所以...,我仍然无法从 webview 读取 html 文本,但我想这只是我手机上的问题,因为其他人都说效果很好,这就是我标记为已回答的原因。 请记住,如果您的应用程序将android:targetVersionSdk
设置为 17 或更高,您需要将 @JavascriptInterface
注释添加到您希望通过 addJavascriptInterface()
公开给 JavaScript 的任何方法(例如,您在此处接受的答案中的processHTML()
方法)。
【参考方案1】:
我知道的一种方式;
在您的活动中声明 javascript 处理程序
class LoadListener
public void processHTML(String html)
Log.e("result",html);
配置你的 webview 之后;
webView.getSettings().setJavaScriptEnabled(true);
webView.addJavascriptInterface(new LoadListener(), "HTMLOUT");
比webview客户端;
webView.setWebViewClient(new WebViewClient()
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url)
return true;
@Override
public void onPageStarted(WebView view, String url,
Bitmap favicon)
public void onPageFinished(WebView view, String url)
view.loadUrl("javascript:window.HTMLOUT.processHTML('<html>'+document.getElementsByTagName('html')[0].innerHTML+'</html>');");
);
【讨论】:
谢谢,这就是我要找的 对于17以上的API,需要添加@JavascriptInterface注解才能生效,否则不会被调用。 这在 API 21 和 Adroid 4.2.2 中有效吗?似乎不适用于带有 API 21 的 Android 4.2.2。但它确实适用于 android 4.4.2 和 API 21。 我试过代码。 onPageFinished() 中的 view.loadUrl() 完成后,不会调用 onPageFinished()。我们怎么知道内部的 loadUrl() 已经完成了? 您的网址是否在等待请求字符串?也许相同的参数?可以发一下申请地址吗?【参考方案2】:获取代码的一种方法是使用给定的here HttpClient。下面blog给出了另一种解决方案。
【讨论】:
这不会带来cookies等以上是关于从加载的 WebView 中获取 HTML 代码 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
当WebView加载的是非HTML网页内容时,如何获取它的内容?
Android WebView从资源原始文件夹加载html文件