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

2022-04-09  本文已影响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
上一篇下一篇

猜你喜欢

热点阅读