这是我的代码。
我只是想在加载URL后从Webview获取页面内容。
在Android上,我有一个显示页面的WebView。
如何在不再请求页面的情况下获取页面源?
似乎WebView在Android 3.0中应该有某种WebResourceResponse()方法,但不知道如何使用它。
public class WebActivity extends Activity {
WebView mWebView;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mWebView = (WebView) findViewById(R.id.webView);
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.loadUrl("https://xyz.com");
mWebView.setWebViewClient(new HelloWebViewClient());
}
private class HelloWebViewClient extends WebViewClient {
public WebResourceResponse shouldInterceptRequest (WebView view, String url)
{
return null;
}
@Override
public void onPageFinished(WebView view, String url)
{
/* This call inject JavaScript into the page which just finished loading. */
mWebView.loadUrl("javascript:window.HTMLOUT.processHTML('<head>'+document.getElementsByTagName('html')[0].innerHTML+'</head>');");
}
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
}
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack()) {
mWebView.goBack();
return true;
}
return super.onKeyDown(keyCode, event);
}}
答案 0 :(得分:0)
我知道这是旧的,但对于未来的访问者,以下内容应该有效。
首先,您需要定义一个接口,例如:
final class LoadingInterface {
@JavascriptInterface
public void outputHTML(final String html){
//do what ever you want with html
}
}
然后在你的WebView上调用
webView.addJavascriptInterface(new LoadingInterface(), "INTERFACE");
在onPageFinished
put:
String js = "javascript:"
+"var html = document.getElementsByTagName('html')[0].innerHTML;"
+"window.INTERFACE.outputSchedule(html);";
webView.loadUrl(js);
如果您只需要部分网页,则可以使用getElementsByTagName('html')[0]
getElementById('partOfPage')