转载地址:http://www.cnblogs.com/hibraincol/archive/2011/10/26/2224866.html
1. 使能javascript:
webView.getSettings().setJavaScriptEnabled
2. 编写本地接口
final class InJavaScriptLocalObj {
publicvoidshowSource(String html) {
Log.d("HTML", html);
}
}
3. 向网页暴露本地接口
webView.addJavascriptInterface(newInJavaScriptLocalObj(),"local_obj");
4. 编写自己的WebViewClient,并在onPageFinished中提取网页源码
final class MyWebViewClient extendsWebViewClient{
publicbooleanshouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
returntrue;
}
publicvoidonPageStarted(WebView view, String url, Bitmap favicon) {
Log.d("WebView","onPageStarted");
super.onPageStarted(view, url, favicon);
}
publicvoidonPageFinished(WebView view, String url) {
Log.d("WebView","onPageFinished ");
view.loadUrl("javascript:window.local_obj.showSource('<head>'+"+
"document.getElementsByTagName('html')[0].innerHTML+'</head>');");
super.onPageFinished(view, url);
}
}
组合在一起的代码为:
package com.hi.briancol.htmlsource;
import android.app.Activity;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.util.Log;
import android.webkit.WebView;
import android.webkit.WebViewClient;
public class HtmlSource extendsActivity {
privateWebView webView;
/** Called when the activity is first created. */
@Override
publicvoidonCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
webView = (WebView)findViewById(R.id.webview);
webView.getSettings().setJavaScriptEnabled(true);
webView.addJavascriptInterface(newInJavaScriptLocalObj(),"local_obj");
webView.setWebViewClient(newMyWebViewClient());
webView.loadUrl("http://www.cnblogs.com/hibraincol/");
}
finalclassMyWebViewClient extendsWebViewClient{
publicbooleanshouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
returntrue;
}
publicvoidonPageStarted(WebView view, String url, Bitmap favicon) {
Log.d("WebView","onPageStarted");
super.onPageStarted(view, url, favicon);
}
publicvoidonPageFinished(WebView view, String url) {
Log.d("WebView","onPageFinished ");
view.loadUrl("javascript:window.local_obj.showSource('<head>'+"+
"document.getElementsByTagName('html')[0].innerHTML+'</head>');");
super.onPageFinished(view, url);
}
}
finalclassInJavaScriptLocalObj {
publicvoidshowSource(String html) {
Log.d("HTML", html);
}
}
}
关键之处在于:
view.loadUrl("javascript:window.local_obj.showSource('<head>'+document.getElementsByTagName('html')[0].innerHTML+'</head>');");
运行,可以看到在showSource(String html)中打印了网页源码。