美文网首页
Android Webview 去除标题(指定标签里的内容)

Android Webview 去除标题(指定标签里的内容)

作者: 雨来 | 来源:发表于2022-04-09 06:44 被阅读0次

    这个事情需要谁去做

    先看文末再考虑这个方案合适不合适你
    理论让来说应该是 web前端来做 是由生产方来处理的(这个H5页面是谁写的谁来做)不要说 android能处理这个问题 为什么你ios不能处理 或者 ios能处理 为什么你android 不能处理。

    web前端(生产方)如何处理

    通过请求的userAgent 就可以判断请求方的 类型 因为 android 的 webView ios的webView 类似组件 肯定是有一个区分的

    Android端如何处理

    参考博客:https://blog.csdn.net/qq_32452623/article/details/52214460
    下面的图也是借用上面博客里面的

    image.png

    我们通过 右键查看网页源码 就可以看到上面的类似的图的 所以说 html 的上下文 document 我这是这样认为了 就像android中的context一样

    document.getElementsByTagName("") 这个可以拿标签
    document.getElementsByClassName("") 可以拿标签上的class 属性
    

    所以通过上面的 document的解释 我们是可以获取一个链接里面的指定标签的

    Android webView的处理

    WebView webView = (WebView) findViewById(R.id.webview);
            WebSettings webSettings = webView.getSettings();
            webSettings.setJavaScriptEnabled(true);
            webSettings.setUseWideViewPort(true);
            webSettings.setLoadWithOverviewMode(true);
     
            webView.loadUrl("http://www.lymidas.com/Home/DataCenter?currentId=1");
     
            webView.setWebViewClient(new WebViewClient(){
                @Override
                public void onPageFinished(WebView view, String url) {
                    super.onPageFinished(view, url);
     
     
                    //编写 javaScript方法
                    String javascript =  "javascript:function hideOther() {" +
                            "document.getElementsByTagName('body')[0].innerHTML;" +
                            "document.getElementsByTagName('div')[0].style.display='none';" +
                            "document.getElementsByTagName('div')[3].style.display='none';" +
                            "document.getElementsByClassName('dropdown')[0].style.display='none';" +
                            "document.getElementsByClassName('min')[0].remove();" +
                            "var divs = document.getElementsByTagName('div');" +
                            "var lastDiv = divs[divs.length-1];" +
                            "lastDiv.remove();" +
                            "document.getElementsByClassName('showme')[0].remove();" +
                            "document.getElementsByClassName('nei-t3')[1].remove();}";
     
                    //创建方法
                    view.loadUrl(javascript);
     
                    //加载方法
                    view.loadUrl("javascript:hideOther();");
                }
            });
    

    一个好用的三方库 ByWebView的处理也是一样的

    https://github.com/youlookwhat/ByWebView

    byWebView = ByWebView
                .with(this)
                .setOnByWebClientCallback(object : OnByWebClientCallback() {
    
                    override fun onPageStarted(view: WebView?, url: String?, favicon: Bitmap?) {
                        super.onPageStarted(view, url, favicon)
                    }
    
                    override fun onPageFinished(view: WebView?, url: String?) {
                        super.onPageFinished(view, url)
    
    //                    https://blog.csdn.net/qq_32452623/article/details/52214460  //处理办法
                        //编写 javaScript方法
    //                    val javascript = "javascript:function hideOther() {" +
    //                            "var headers = document.getElementsByTagName('head');" +
    //                            "var lastHeader = headers[headers.length-1];" +
    //                            "lastHeader.remove();" +
    //                            "var divs = document.getElementsByTagName('nav');" +
    //                            "var lastDiv = divs[divs.length-1];" +
    //                            "lastDiv.remove();" +
    //                            "}"
    //                    //创建方法
    //                    view!!.loadUrl(javascript)
    //                    //加载方法
    //                    view!!.loadUrl("javascript:hideOther();")
    
    
                    }
    
                    override fun isOpenThirdApp(url: String?): Boolean {
                        return super.isOpenThirdApp(url)
                    }
    
                    override fun onReceivedSslError(
                        view: WebView?,
                        handler: SslErrorHandler?,
                        error: SslError?
                    ): Boolean {
                        return super.onReceivedSslError(view, handler, error)
                    }
                })
                .setWebParent(web_view_container_common, LinearLayoutCompat.LayoutParams(-1, -1))
                .useWebProgress("#ffb6cf", "#ff0000", 2) // 进度条渐变色(开始颜色,结束颜色,高度)
                .loadUrl(urlStr)
    

    在 onPageFinished里面操作就ok了


    image.png
    image.png image.png

    相关文章

      网友评论

          本文标题:Android Webview 去除标题(指定标签里的内容)

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