Android WebView: отображать только часть веб-сайта
Я хотел знать, можно ли отображать только определенные части веб-сайта в WebView. Например, у меня есть этот сайт со следующим html:
<html>
<body>
<div id="1">ID 1</id>
<div id="2">ID 2</id>
<div id="3">ID 3</id>
</body>
</html>
можно отображать только в WebView, например, содержимое div с id = "3"?
Мой код - WebWiew:
WebViewClient WebClient = new WebViewClient(){
public boolean shouldOverrideUrlLoading(WebView view, String url){
view.loadUrl(url);
return true;
}
};
WebView myWebView = (WebView) findViewById(R.id.webView1);
myWebView.getSettings().setJavaScriptEnabled(true);
myWebView.getSettings().setBuiltInZoomControls(true);
myWebView.getSettings().setBuiltInZoomControls(true);
myWebView.setWebViewClient(WebClient);
myWebView.loadUrl("https://www.example.com");
Ответы
Ответ 1
Вы можете сделать это, расширив WebViewClient и введя некоторый javascript, который отобразит вашу веб-страницу.
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);
Для скрытия элементов используйте view.loadUrl("javascript:document.getElementById(id).style.display = 'none';)
Дополнительная информация В Android Webview я могу изменить DOM веб-страницы?
Ответ 2
Самое главное понять здесь, является ли элемент, который мы называем внутри веб-html файла, class или id. Если это id, то getElementById
работает отлично. Если это класс, тогда требуется getElementsByClassName
.
Ниже приведен пример, который я использую.
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'; "+
"}
)()");