android WebView(四)與html互動,androidwebview
WebView如何與html相互互動
很多時候WebView需要和html進行互動,要麼需要通過Java代碼控制頁面活動,要麼就是通過js觸發Java代碼,WebView提供了這種機制。
首先來看一下我們需要互動的html代碼吧:
<!DOCTYPE html><html> <head> <title>MyHtml.html</title> </head> <body> <br> <br>大家晚上好 <br> <br>大家晚上好 <br> <br>大家晚上好 <br> <input type="button" value="測試" onclick="javascript:window.handler.show(document.body.innerHTML);" /> </body></html>
簡單的html代碼,三行文字,一個按鈕。document.body.innerHTML就是擷取html中body節點中的內容。
然後我們把它載入進WebView中,並開啟js:
webView.loadUrl("file:///android_asset/MyHtml.html");webView.getSettings().setJavaScriptEnabled(true);webView.setWebViewClient(new WebViewClient() {@Overridepublic 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);}});
在上面的html中按鈕的點擊事件使用了一個借口:window.handler。要想使用這個借口我們需要先定義一下:
class Handler {public void show(String data) {new AlertDialog.Builder(WebViewActivity.this).setMessage(data).create().show();}}
函數public void show(String data)就是這個借口提供的,上面的html和Java代碼都有調用過。但是WebView怎麼才能知道有這
麼一個借口可以調用呢?答案如下:
webView.addJavascriptInterface(new Handler(), "handler");
這句話就是用來綁定介面的。
運行結果如下: