Android之获取WebView所加载网址网站的源码

WebView是Android上常用的组件之一, 有什么用? 简单而言, 就是一个浏览器, 当然也是一个DIY性能比较强的浏览器,  常见的输入网址并打开浏览,  调用内置的浏览器下载, 屏蔽图片, 在浏览页面内查找内容, 支持Javascript... ... 以上功能或性能都能在WebView中得到实现或支持, 成为一个真正的浏览器. 本节中, 主要讲利用JS获取WebView所加载的当前网站的html源码.

所定义一个简单那的类方法接收js所document.body.innerHTML方法所获取的body源码, 然后在AlerDialog中显示出来. OK, 直接上代码.

<span style="white-space:pre">	</span>public void onCreate(Bundle savedInstanceState){
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		wv  = (WebView)findViewById(R.id.wv_main);
		wv.getSettings().setJavaScriptEnabled(true);
		wv.addJavascriptInterface(new getHtmlListener(), "test");
		
		wv.loadUrl("http://m.baidu.com/");
		//wv.loadUrl("javascript:window.test.get(document.body.innerHTML);");
		//wv.loadUrl("javascript:(function(){ javascript:window.test.get(document.body.innerHTML); })()");
<span style="white-space:pre">		</span>wv.getSettings().setSupportZoom(true);
<span style="white-space:pre">		</span>wv.getSettings().setBuiltInZoomControls(true);
<span style="white-space:pre">		</span>wv.getSettings().setUseWideViewPort(true);
<span style="white-space:pre">		</span>wv.setWebViewClient(new MyWebViewClient());
	}
	
	
<span style="white-space:pre">	</span>private class MyWebViewClient extends WebViewClient{
<span style="white-space:pre">		</span>public  boolean shouldOverrideUrlLoading(WebView view,String url){
<span style="white-space:pre">			</span>/*view.loadUrl(url);*/
<span style="white-space:pre">			</span>return true;
<span style="white-space:pre">		</span>}
<span style="white-space:pre">		</span>
<span style="white-space:pre">		</span>public void onPageStarted(WebView view, String url, Bitmap favicon) {
<span style="white-space:pre">			</span>super.onPageStarted(view, url, favicon);
<span style="white-space:pre">	</span>    }
<span style="white-space:pre">		</span>
<span style="white-space:pre">		</span>public void onPageFinished(WebView view, String url) {<span style="white-space:pre"></span><pre name="code" class="java"><span style="white-space:pre">			</span>wv.loadUrl("javascript:window.test.get(document.body.innerHTML);");
super.onPageFinished(view, url);
   }

public void onReceivedError(WebView view, int errorCode,
           String description, String failingUrl) {
   }

 
</pre><pre name="code" class="java">	class getHtmlListener{
		public void get(String data){
			//得到源码并显示
			new AlertDialog.Builder(ExamineDetialActivity.this).setMessage(data).create().show();
		}
	}

将以上对应内容换为  wv .loadUrl("javascript:window.local_obj.showSource('<head>'+"  
                        + "document.getElementsByTagName(' html')[0].innerHTML+'</head>');"); 
   可获取完整内容.

document.getElementByIdx_x("span_id").innerHTML ="内容";

document.getElementByIdx_x("span_id").innerText = "内容";

javascript:window.test.get(document.getElementById("logo").value);

以上2个方法在js中也常见 , 故给出来自己重复记忆下.

参考文章 

android中如何获得webView中的内容






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值