Android使用WebView获取网页文本
WebView执行js的两种方式:
- 用WebView的loadUrl()
- 用WebView的evaluateJavascript()
两种方式的区别主要是loadUrl()会使页面刷新,而evaluateJavascript()不会使页面刷新,evaluateJavascript()在Android4.4后才可使用。
上篇的往百度首页输入框输入内容的时候出现白屏现象应该就是执行loadUrl()会使页面刷新导致的。
改成用WebView的evaluateJavascript()执行js的话改成这样js里不用加var c=也可以:
public void click1(View v){
String a=edit.getText().toString();//获取EditText框的内容
String js="javascript:document.getElementById('index-kw').value='" + a + "';";
//wv_main.loadUrl("javascript:var c=document.getElementById('index-kw').value='" + a + "';");//用loadUrl()这里要加上var 变量名=,否则会白屏
wv_main.evaluateJavascript(js,null);
}
用WebView的evaluateJavascript()还可以获取网页文本:
例子:获取百度首页输入框和“百度一下”按钮的文本:
public void click2(View v){
String js1="javascript:document.getElementById('index-kw').value;";//获取输入框文本
String js2="javascript:document.getElementById('index-bn').innerHTML;";//获取百度一下按钮文本
wv_main.evaluateJavascript(js2, new ValueCallback<String>() { //执行js2
@Override
public void onReceiveValue(String value) {
String str=value;
Toast.makeText(WebActivity.this,str,Toast.LENGTH_LONG).show();
}
});
}
结果: