2017-12-27 13 views
0

내 Android 애플리케이션의 웹 페이지를 표시하는 WebView가 있지만 웹 사이트 제목과 광고 제목이 포함 된 헤더를 원하지 않습니다. 이것은 내가 작성한 코드이며 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의 첫 번째 요소를 잡고 거기에서 이동할 수 있습니다.

다음과 같이 시도해보십시오. 이러한 클래스로 하나의 요소 만 숨기려고 할 때 작동해야합니다.

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

당신이 그 클래스에 하나 개 이상의 요소를 숨길 필요가 끝날 경우 , 당신이 시도 할 수 있습니다 : 완벽하게 작동

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

당신을 감사합니다! – dginos3