Android WebView: muestra sólo una parte del sitio web
Quería saber si era posible mostrar sólo ciertas partes de un sitio web en un WebView. Por ejemplo, tengo este sitio web con el siguiente html:
<html> <body> <div id="1">ID 1</id> <div id="2">ID 2</id> <div id="3">ID 3</id> </body> </html>
Es posible mostrar sólo en WebView, por ejemplo, el contenido de la div con id = "3"? Mi código es WebWiew:
- Cadena de confianza de Android SSL con certificados intermedios (Apache HttpClient 4.X)
- Cómo bloquear los botones de Android / teléfono de código (bloqueo de pantalla)?
- Cliente de Java java puro
- Desafortunadamente MyApp se ha detenido. ¿Como puedo resolver esto?
- Android - Obtener ubicación sólo una vez
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");
- Java Java FATAL EXCEPTION java.lang.NullPointerException
- Lectura de JSON con Retrofit
- Bloquear / desbloquear una aplicación de mi aplicación: Android
- Android Studio "clase" o "interfaz" esperado
- SharedPreferences no se guardará si la aplicación se vuelve a abrir
- Mostrar números en el gráfico circular
- No se puede leer / escribir en sdcard en Android
- Android objetivo se cambia después de hacer cordova plataforma de actualización
Usted puede hacer esto mediante la ampliación de WebViewClient y la inyección de algunos javascript que hará su página web
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);
Para ocultar elementos use view.loadUrl("javascript:document.getElementById(id).style.display = 'none';)
Más información En la vista Web de Android, ¿puedo modificar el DOM de una página web?
La cosa más básica a entender aquí es si el elemento que nos estamos refiriendo dentro del archivo de html de la tela es una clase o un id . Si es un id entonces getElementById
funciona perfectamente. Si es una clase entonces getElementsByClassName
es necesario.
A continuación se muestra un ejemplo que estoy usando.
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'; "+ "} )()");