webview中注入js文件實現js調用本地方法


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);


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM