美文网首页
WebView技巧与问题收集

WebView技巧与问题收集

作者: JinWu_1689 | 来源:发表于2020-08-28 07:28 被阅读0次

    1.打印html的console.log的方法

    webview.setWebChroomeClient(new WebchromeClient() {
    // 重载
    public void onConsoleMessage(String message, int lineNumber,String sourceID) {
    Log.d(TAG, message + " from line " + lineNumber + "of" + sourceID);
    }
    }

    2.url带#,且只改#后的值不刷新问题

    如地址:https://xxxx.com#AA => https://xxxx.com#BB,则loadUrl不会去刷新数据将BB传给界面。
    解决办法动态加一个?参数值
    https://xxxx.com?arg=AA#AA ,https://xxxx.com?arg=BB#BB, arg为随意定的一个参数

    3.利用WebView抓取非静态页面数据

    网页数据的生成很多时候是由js执行后产生,此时若只是将网页当数据接口的去请求,则得到的数据往往只是简单的带js脚本的数据。此方法是介用webview执行完url,js后读取结果数据。

    private void initWebView() {
            mWebView.getSettings().setJavaScriptEnabled(true);
            mWebView.addJavascriptInterface(this,"local_obj"); //注入Android本地方法所在对象给js层
            WebViewClient client = new WebViewClient() {
                @Override
                public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
                    Log.e("webview", "shouldOverrideUrlLoading: " + request.toString());
                    return super.shouldOverrideUrlLoading(view, request);
                }
    
                @Override
                public void onPageFinished(WebView view, String url) {
                    Log.e("webview", "onPageFinished: " + url);
                  // js层读取html并将调用Android的本地方法
                    view.loadUrl("javascript:window.local_obj.showSource(''+" +
                            "document.getElementsByTagName('html')[0].innerHTML+'');");
                    super.onPageFinished(view, url);
                }
            };
            mWebView.setWebViewClient(client);
        }
    
    // Android的本地方法
    @JavascriptInterface 
        public void showSource(final String source) {
            Log.e("webview", "被js回调的结果数据: " + source);
           //利用一些html数据解析库如jsoup解析出想要的数据
    }
    

    相关文章

      网友评论

          本文标题:WebView技巧与问题收集

          本文链接:https://www.haomeiwen.com/subject/geiyihtx.html