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) 对于无参数的方法调用,方法后面一定要加(),否则可能无法调用成功。