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:
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'; "+
"}
)()");
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?