webview中注入js文件實現js調用本地方法
1.創建一個內部類對象,其中通過@JavascriptInterface來聲明android本地方法供js調用;
class JSObject {
@JavascriptInterface
public void closeWindow() {
//do something
...
}
@JavascriptInterface
public void openImage(String img, String url) {
//do something
...
}
}
2.在webview中進行操作
webView.addJavascriptInterface(new JSObject(), "myObj");
3.在WebViewClient()的onPageFinished()方法中注入js代碼
String js = "var script = document.createElement('script');"; //常規操作
js+= "script.type = 'text/javascript';"; //常規操作
js+="var child=document.getElementsByClassName(\"btn_back hashover\")[0];"; //根據className來查找對應的組件
js+="child.onclick=function(){userIdClick();};"; //為該組件設置點擊事件
js+= "function userIdClick(){myObj.getClose();};"; //通過該點擊事件來調用android中的方法
// js+= "var ele = document.getElementsByTagName(\"img\");";
js+= "var ele = document.getElementsByClassName(\"strategy_desc\")[0].getElementsByTagName(\"img\");";
js+= "var imgUrl = new String();";
js+= "for (var i = 0; i<ele.length; i++) {";
js+= "imgUrl+=ele[i].src+',';}" ;
js+= "for (var i = 0; i<ele.length; i++) {" ;
js+= "ele[i].onclick=function(){";
js+= "imgIdClick(this.src);}; }";
js+= "function imgIdClick(val){myObj.openImage(imgUrl, val);};";
webView.loadUrl("javascript:" + js);