webview js注入提取html内容

需求:加载第三方的web链接时,他们的错误直接抛出在webView显示,所以我们需要抓取到webview中的html内容,然后解析出里面的错误日志,通过dialog弹出给用户。

方案:1、通过HttpPost接口访问url拿到里面的错误日志,然后弹出,没有错误日志的时候,webview加载url,该方案需要额外多访问一次url,并且需要拦击到该url,如果是通过js表单的形式提交的url,web的shouldoverloadurl方法拦截不到该url。

方案:2、通过js注入的方法抓取webview中的html内容,解析出其中的错误日志,然后通过js反向调用android方法通过弹窗显示。该方法直接暴力。

方法:

1、定义android端解析处理抓取到的html文本的方法

  /**
     * 逻辑处理
     *
     * @author linzewu
     */
    final class InJavaScriptLocalObj {
        @JavascriptInterface
        public void showErrorInfo(String html) {
  //解析html,弹窗显示错误日志
  }
    }
2、设置webView支持js,声明js反调用Android的方法名称及类。

webSettings.setJavaScriptEnabled(true);
webView.addJavascriptInterface(new InJavaScriptLocalObj(), "java_obj");
3、监听webview加载完成,注入一段获取html文本,以及js反调用Android方法js。

 @Override
        public void onPageFinished(WebView view, String url) {
            if (url.contains("xxxxxx")) {
                
                view.loadUrl("javascript:window.java_obj.showErrorInfo(''+" +
                        "document.documentElement.innerHTML+'');");

            }
            super.onPageFinished(view, url);
        }



你可能感兴趣的:(webview js注入提取html内容)