Android WebView: display only some part of website

前端 未结 2 1429
心在旅途
心在旅途 2020-12-03 01:30

I wanted to know if it was possible to display only certain parts of a website in a WebView. For example I have this website with the following html:



        
相关标签:
2条回答
  • 2020-12-03 01:59

    The most basic thing to understand here is whether the element we are referring to inside the web html file is a class or a id. If it is a id then getElementById works perfectly. If it is a class then getElementsByClassName is required.

    Following is an example that I am using.

    myWebView.loadUrl
          ("javascript:(function() { " +
               "document.getElementsByClassName('header_wrapper')[0].style.display='none'; " +
               "document.getElementsByClassName('footer-contact')[0].style.display='none'; "+
               "document.getElementsByClassName('navbar-header')[0].style.display='none'; "+
               "document.getElementsByClassName('footer-social')[0].style.display='none'; "+
               "document.getElementById('footer_bottom').style.display='none'; "+
               "document.getElementById('footer_content').style.display='none'; "+
               "document.getElementById('core_mobile_menu').style.display='none'; "+
               "document.getElementById('catapult-cookie-bar').style.display='none'; "+
           "}
          )()");
    
    0 讨论(0)
  • 2020-12-03 02:02

    You can do this by extending WebViewClient and injecting some javascript which will render your web Page

    public class MyWebClient extends WebViewClient {
    
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        view.loadUrl(url);
        return true;
    }
    
    @Override
    public void onPageFinished(WebView view, String url) {
        view.loadUrl("javascript:your javascript");
    }
    }
    .........
    final MyWebClient myWebViewClient = new MyWebClient();
    mWebView.setWebViewClient(myWebViewClient);
    

    For hiding elements use view.loadUrl("javascript:document.getElementById(id).style.display = 'none';)

    More info In Android Webview, am I able to modify a webpage's DOM?

    0 讨论(0)
提交回复
热议问题