WebView JavaScript

  • WebView開啟JavaScript腳本執(zhí)行。
  • WebView設(shè)置供JavaScript調(diào)用的交互接口。
  • 客戶端和網(wǎng)頁端編寫調(diào)用對方的代碼。

Java設(shè)置與調(diào)用js

webView.loadUrl(“javascript:methodName(parameterValues)”)

String call = "javascript:HelloWord()";
webView.loadUrl(call)

methodName是js的方法名,
parameterValues是參數(shù)。

WebView webview = (WebView) findViewById(R.id.testWebview);
WebSettings webSettings = webview.getSettings();
webSettings.setJavaScriptEnabled(true);// 啟動js腳本

//添加與js的交互接口,起的名稱與js代碼中的接口名稱要一致
webview.addJavascriptInterface(new JavascriptImgInterface(), "connect");
webview.setWebViewClient(new WebViewClient() {

    @Override
    public void onPageFinished(WebView view, String url) {
        //網(wǎng)頁加載好了之后調(diào)用js的方法
        String call = "javascript:findImg()";
        webview.loadUrl(call);
        super.onPageFinished(view, url);
    }
    
});

class JavascriptImgInterface{
        /**
         * 注意: 在Android4.2極其以上系統(tǒng)需要給提供js調(diào)用的方法前加入一個注釋:@JavaScriptInterface;
         *  在虛擬機當中 Javascript調(diào)用Java方法會檢測這個anotation,
         * 如果方法被標識@JavaScriptInterface則Javascript可以成功調(diào)用這個Java方法,否則調(diào)用不成功。
         * @param img
         */
        @JavascriptInterface
        public void showImg(String img){
            //利用js傳過來的參數(shù)得到圖片的地址
            Log.d("HERE", "showImg: "+img);
            Intent intent = new Intent();
            intent.putExtra("ImageUrl", img);
            intent.setClass(ArticleActivity.this, ImageShowActivity.class);
            startActivity(intent);
        }
    }

js調(diào)用Java

window.jsInterfaceName.methodName(parameterValues)

jsInterfaceName是java中設(shè)置的接口的名字,上面第四行的'connect'
methodName是調(diào)用的java中的方法名,
parameterValues是參數(shù)

String javascript ="function findImg(){"+
        "var objs = document.getElementsByTagName('img');"+
        "for(var i=0;i<objs.length;i++){"+
            "objs[i].onclick=function(){" +
                "window.connect.showImg(this.src)" +
            "}"+
        "}}";
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容