我的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);
也许有一些明显的事情我做错了,但是我浪费了很多时间来寻找答案。任何帮助表示赞赏。
答案 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' })