有时候我们需要在加载webview时,获取加载完成的内容,当然,WebView也是有可能包含javascript。通过以下操作,我们是可以获取到WebView加载的内容。
1、自定义一个内部类,获取WebView加载的内容
class Handler { public void show(String data) { // 这里的data就webview加载的内容,即使页面跳转页都可以获取到,这样就可以做自己的处理了 new AlertDialog.Builder(WebViewActivity.this).setMessage(data).create().show(); } }
2、webview关键代码
// web页面处理 webpage.getSettings().setJavaScriptEnabled(true);// 支持javascript webpage.addJavascriptInterface(new Handler(), "handler"); // 相当于在网页的js中增加一个handler类,实现java与WebView的js交互 webpage.loadUrl(webpage_url); webpage.setWebViewClient(new WebViewClient() { // 依然在webview打开新页面 public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); return true; } @Override public boolean shouldOverrideKeyEvent(WebView view, KeyEvent event) { return super.shouldOverrideKeyEvent(view, event); } @Override public void onPageStarted(WebView view, String url, Bitmap favicon) { super.onPageStarted(view, url, favicon); } @Override public void onPageFinished(WebView view, String url) { // 通过内部类定义的方法获取html页面加载的内容,这个需要添加在webview加载完成后的回调中 view.loadUrl("javascript:window.handler.show(document.body.innerHTML);"); super.onPageFinished(view, url); } @Override public void onScaleChanged(WebView view, float oldScale, float newScale) { // TODO Auto-generated method stub super.onScaleChanged(view, oldScale, newScale); webpage.requestFocus(); webpage.requestFocusFromTouch(); } });
通过以上的操作,你就可以达到你需要的效果了。挺简单实用的