Puedes depurar tu código JavaScript con las APIs de console
JavaScript y ver los mensajes de salida en Logcat. Si sabes cómo depurar páginas web con Firebug o Web Inspector, probablemente sepas cómo usar console
(como console.log()
). El framework de WebKit de Android admite la mayoría de las mismas APIs, por lo que puedes recibir registros de tu página web cuando depuras en tu WebView
. En esta sección, se describe cómo usar las APIs de consola para la depuración.
Cómo usar las APIs de consola en WebView
Las APIs de la consola también son compatibles cuando se depura en WebView
. Debes proporcionar un WebChromeClient
que implemente el método onConsoleMessage()
para que los mensajes de la consola aparezcan en Logcat.
Luego, aplica el WebChromeClient
a tu WebView
con setWebChromeClient()
. Para obtener más información, consulta la documentación de WebView
.
En el siguiente ejemplo, se muestra cómo usar las APIs de la consola en WebView
:
Kotlin
val myWebView: WebView = findViewById(R.id.webview)
myWebView.webChromeClient = object : WebChromeClient() {
override fun onConsoleMessage(message: ConsoleMessage): Boolean {
Log.d("MyApplication", "${message.message()} -- From line " +
"${message.lineNumber()} of ${message.sourceId()}")
return true
}
}
Java
WebView myWebView = findViewById(R.id.webview);
myWebView.setWebChromeClient(new WebChromeClient() {
@Override
public boolean onConsoleMessage(ConsoleMessage consoleMessage) {
Log.d("MyApplication", consoleMessage.message() + " -- From line " +
consoleMessage.lineNumber() + " of " + consoleMessage.sourceId());
return true;
}
});
El ConsoleMessage
también incluye un objeto MessageLevel
para indicar el tipo de mensaje de consola que se está publicando. Puedes consultar el nivel del mensaje con messageLevel()
para determinar su gravedad y, luego, usar el método Log
adecuado o tomar otras medidas apropiadas.
Ya sea que uses onConsoleMessage(String, int, String)
o onConsoleMessage(ConsoleMessage)
, cuando ejecutas un método de la consola en tu página web, Android llama al método onConsoleMessage()
apropiado para que puedas informar el error. Por ejemplo, con el código de ejemplo, se muestra un mensaje de Logcat como el siguiente:
Hello World -- From line 82 of http://www.example.com/hello.html
Estos son algunos recursos adicionales relacionados con la depuración:
Prueba funciones web experimentales
Al igual que en la página chrome://flags
de Google Chrome, también puedes probar funciones web experimentales en WebView
.
Para ello, sigue estos pasos:
Instala uno de los canales de versión preliminar de
WebView
(beta, para desarrolladores o Canary){:.external}.Cambia el canal de
WebView
en tu dispositivo de prueba al canal de versión previa al lanzamiento instalado.Haz clic en el selector de Herramientas para desarrolladores de WebView.
Figura 1: Ícono de las Herramientas para desarrolladores de WebView para la app instalada en un dispositivo. En DevTools, haz clic en el elemento Flags y busca las funciones experimentales que quieras habilitar o inhabilitar. El cambio se aplica a todas las instancias de
WebView
en el dispositivo.Detén y reinicia la app para comenzar a probar las funciones nuevas.
Para obtener más información sobre cómo activar o desactivar marcas, consulta la documentación de WebView
DevTools.