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('<head>'+" +
                        "document.documentElement.innerHTML+'</head>');");

            }
            super.onPageFinished(view, url);
        }



  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值