使用javascript getElementsByClassName()无法正确显示WebView

时间:2017-12-27 00:47:15

标签: javascript android webview

我的WebView显示了我的Android应用程序的网页,但我不希望显示带有网站标题和广告的标题。这是我编写的代码,我不确定为什么它不会删除WebView中的标题。

webView = (WebView) findViewById(R.id.main_webview);
    webView.setWebViewClient(new WebViewClient(){
        @Override
        public void onPageFinished(WebView view, String url) {
            webView.loadUrl("javascript:(function() { " +
                    "var head = document.getElementsByClassName('logo-wrapper colored-header').style.display='none'; " +
                    "})()");
        }

    });
    String url = "http://davisclipper.com";



    WebSettings.ZoomDensity zoomDensity = WebSettings.ZoomDensity.FAR;
    webView.getSettings().setJavaScriptEnabled(true);

    webView.getSettings().setDefaultTextEncodingName("utf-8");
    webView.getSettings().setLoadWithOverviewMode(true);
    webView.getSettings().setDefaultZoom(zoomDensity);
    webView.getSettings().setSupportZoom(true);
    webView.getSettings().setBuiltInZoomControls(true);
    webView.requestFocus(View.FOCUS_DOWN);
    webView.setHorizontalScrollBarEnabled(false);

    webView.getSettings().setLayoutAlgorithm(WebSettings.LayoutAlgorithm.NORMAL);

    webView.loadUrl(url);

也许有一些明显的事情我做错了,但是我浪费了很多时间来寻找答案。任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:2)

如果您确信自己的JavaScript正在页面上执行,那么您的JavaScript代码可能只会出现一个小错误。这就是为什么它似乎什么都不做。

我相信document.getElementsByClassName会返回HTMLCollection,而不只是一个元素。我不认为你可以设置style。相反,您可以抓住HTMLCollection中的第一个元素并从那里开始。

尝试这样的事情。如果你只是试图隐藏这些类中的一个元素,它应该可以工作。

document.getElementsByClassName('logo-wrapper colored-header')[0].style.display='none'

如果您最终需要使用这些类隐藏多个元素,可以试试这个:

document.getElementsByClassName('logo-wrapper colored-header').map(el => { el.style.display = 'none' })