WebView与JS的交互,以及注意事项

522 阅读1分钟
  • 允许加载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);