JavaScript與WebView交互有多種方法:這裏先試驗一下對象映射的方式。
1. 通過對象映射方式
Android中通過 通過webView.addJavaScriptInterface(java對象,"javascript中可以看到的名字")
html中通過事件點擊,調用(可以通過<a>標籤,或者定義button都可以調用)
2.具體的實現步驟:
1.寫html的頁面
2.Android要寫對應的實現代碼。
1.html 頁面
功能:通過點擊事件,調起javascript代碼中的方法。
實現方法:可以通過<a>標籤,其中帶有onclick的事件,onclick後面帶上需要調用本地方法的javascript代碼。
這裏的實現是
<a onclick=“直接調用方法或javascript中的對象方法”></a>
例如:<a onclick="MyJsBridge.getUserInfo()">CallAndroidMethod</a>
注意: <a></a> 這個標籤不能寫在javascript腳本的標籤內部。而是應該寫在<body></body>的內部。
<html> <head> JS 與 Android 本地代碼交互 </head> <body> <!-- <button id="btn_java">invoke java</button> --> <a onclick="MyJsBridge.getUserInfo()">CallAndroidMethod</a> <!--<script type="text/javascript">--> <!--// var btn = document.getElementById("btn_java")--> <!--// btn.onclick=function() {--> <!--// MyJsBridge.getUserInfo()--> <!--// }--> <!----> <!--</script>--> </body> </html>
2.Android中的實現代碼:
final WebView webView = findViewById(R.id.my_webview); webView.setWebViewClient(new MyWebViewClient()); webView.getSettings().setJavaScriptEnabled(true);
webView.addJavascriptInterface(getMyJsBridge(), "MyJsBridge"); webView.loadUrl("file:///android_asset/js_native_interact.html");
WebView 與JavaScript交互,遇到的幾個問題:
1)這個a標籤這個標籤放在html的body裏面,不能放在javascript語言的標記內部。
2)webView要啓用Javascript。調用webView.getSettings().setJavaScriptEnabled(true);
3) 對於無參數的方法調用,方法後面一定要加(),否則可能無法調用成功。