2017-12-27 30 views
0

AndroidアプリケーションのWebページをWebViewで表示していますが、Webサイトのタイトルと広告のヘッダーを表示したくありません。これは私が書いたコードなので、なぜWebViewのヘッダーが削除されていないのか分かりません。javascriptを使用してWebViewが正しく表示されないgetElementsByClassName()

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

JavaScriptがページ上で実行されていると確信している場合は、JavaScriptコードにごくわずかな誤りがあるかもしれません。それが何もしていないように見える理由です。

document.getElementsByClassNameは、単一の要素だけでなく、HTMLCollectionを返します。私はあなたがそれにstyleを設定できるとは思わない。代わりに、HTMLCollectionの最初の要素をつかんでそこから行くことができます。

このようなものを試してみてください。これらのクラスを持つ要素を1つだけ隠すようにしているのであればうまくいくはずです。

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

あなたはそれらのクラスに複数の要素を非表示にする必要が終わるならば、あなたはこれを試すことができます。

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

完全に働いたありがとうございました! – dginos3