[問題] 請問webview與javascript溝通
最近要寫一段程式
主要是要從網站上撈某個值出來
查到IOS有一種寫法是:
self.txtCode.text=[CodeWeb stringByEvaluatingJavaScript
FromString:@"document.getElementById('code').innerHTML"];
可是不知道在android該怎麼樣寫
才能像這樣用一句話就撈出網頁上我想要撈的欄位的值呢??
謝謝各位前輩
有查到了一個方式:
webView = new WebView(this);
setContentView(webView);
webView.loadUrl(“ http://veikr.com/wap/ “);
webView.getSettings().setJavaScriptEnabled(true);
webView.addJavascriptInterface(new Handler(), “handler”);
webView.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
Toast.makeText(WebViewActivity.this, “网?加?完成”, 0).show();
view.loadUrl(“javascript:window.handler.show(document.body.innerHTML);”);
super.onPageFinished(view, url);
}
});
class Handler {
public void show(String data) {
Toast.makeText(WebViewActivity.this, “?行了handler.show方法”, 0).show();
new AlertDialog.Builder(WebViewActivity.this).setMessage(data).create().show();
}
}
轉載處:http://veikr.com/wap/index-wap2.php?p=192
此範例將"document.body" 改成"document.getElementById('ID')"
就可以撈到值了 在Handler 裡的"data"就是要撈的值
不過又有一個新的問題,
小弟目前要是要做從一個網站,取得郵遞區號
有四個spinner,
點選完後,會跳出一個zipCode : 12345
(以上這幾個spinner是在webview裡面控制)
然後點擊手機端的button,要將那個12345 傳回手機端
一開始嘗試過,將document.body改成document.getElementById('ID'),
這樣是可以抓到值(試過比如說抓個標題標頭之類的);
可是那個zipcode欄位試了一下,一開始是不存在那個欄位
是在選完4個spinner之後才會出現一個欄位,比如說zipcodeId,
選完之後再點擊手機端的Button,就會完全沒有反應,
不曉得問題是為什麼QQ
=============================================================================
小弟已經解決了,把做法po上來供人參考一下:
如果是照上面講的,按下button就可以取得特定欄位值,
如果webview裡面有spinner的話,會比較麻煩
要加上webview.reload();
不過單單這樣會有問題,會有thread跟view的衝突(這部份我也還不太清楚)
所以在button的監聽裡要改成上:
Base_Activity.runOnUiThread(new Runnable() {
@Override
public void run() {
// refresh ui
webview.reload();
String url="javascript:window.xxx.show(document
.getElementById('ID').innerHTML);";
webview.loadUrl(url);
}
});
這樣就可以從網頁中取得特定位置的值,並重新讀取網頁再將新的值取出來了
這個方法不知道正不正確,不過小弟已經完成了,程式碼供給有需要的朋友參考^^
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.120.192.224
推
07/03 13:06, , 1F
07/03 13:06, 1F
推
07/03 14:55, , 2F
07/03 14:55, 2F
※ 編輯: nightwolf013 來自: 59.120.192.224 (07/03 15:10)
※ 編輯: nightwolf013 來自: 59.120.192.224 (07/03 15:46)
→
07/03 20:22, , 3F
07/03 20:22, 3F
→
07/03 20:24, , 4F
07/03 20:24, 4F
→
07/03 20:24, , 5F
07/03 20:24, 5F
※ 編輯: nightwolf013 來自: 59.120.192.224 (07/04 11:41)