WebView與JS的互動,以及注意事項

夜幕降流星雨發表於2018-08-19
  • 允許載入js

    webView.getSettings().setJavaScriptEnabled(true);
    複製程式碼
  • Js類,注意事項

    //方法必須是public
     public class JsInterface {
            //必須要新增註釋
            @JavascriptInterface
            public void setValue(String value) {
                //注意:該方法在非主執行緒中呼叫
                //throw Exception是捕獲不到異常的
                //注意資料型別 js和Java是有區別的 js的空是undefined
            }
        }
    複製程式碼
  • WebView新增Js物件,給網頁呼叫

    //給webView新增Js類
    webView.addJavascriptInterface(new JsInterface(), "ObjName");
    複製程式碼
  • WebView呼叫網頁Js方法

    //webView呼叫Js方法1,判斷方法是否存在
    webView.loadUrl("javascript:if(window.jsMethod){window.jsMethod("+value+")}");
    //webView呼叫Js方法2,推薦 效率高有回撥
    webView.evaluateJavascript("window.jsMethod(" + value + ")", new ValueCallback<String>() {
              @Override
              public void onReceiveValue(String value) {
                    //此處為 js 返回的結果
              }
            });
    複製程式碼
  • chrome除錯WebView

    //chrome除錯 chrome開啟 chrome://inspect/#devices(第一次需要翻牆)
    //webView開啟日誌
    webView.setWebContentsDebuggingEnabled(true);
    複製程式碼

相關文章