Вы можете отлаживать JavaScript, используя console
API JavaScript, и просматривать выходные сообщения в Logcat. Если вы знакомы с отладкой веб-страниц с помощью Firebug или Web Inspector, то, вероятно, знакомы с использованием console
(например, console.log()
). Фреймворк Android WebKit поддерживает большинство тех же API, поэтому вы можете получать логи с веб-страницы при отладке в WebView
. В этом разделе описывается, как использовать консольные API для отладки.
Используйте консольные API в WebView
Консольные API также поддерживаются при отладке в WebView
. Для отображения консольных сообщений в Logcat необходимо предоставить WebChromeClient
, реализующий метод onConsoleMessage()
. Затем примените WebChromeClient
к WebView
с помощью setWebChromeClient()
. Подробнее см. в документации WebView
.
В следующем примере показано, как использовать консольные API в WebView
:
Котлин
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
}
}
Ява
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;
}
});
ConsoleMessage
также включает объект MessageLevel
, указывающий тип доставляемого консольного сообщения. Вы можете запросить уровень сообщения с помощью messageLevel()
чтобы определить его важность, а затем использовать соответствующий метод Log
или выполнить другие необходимые действия.
Независимо от того, используете ли вы onConsoleMessage(String, int, String)
или onConsoleMessage(ConsoleMessage)
, при выполнении консольного метода на веб-странице Android вызывает соответствующий метод onConsoleMessage()
, чтобы вы могли сообщить об ошибке. Например, в этом примере кода выводится сообщение Logcat, которое выглядит следующим образом:
Hello World -- From line 82 of http://www.example.com/hello.html
Ниже приведены дополнительные ресурсы, связанные с отладкой:
Тестирование экспериментальных веб-функций
Подобно странице chrome://flags
в Google Chrome, вы также можете тестировать экспериментальные веб-функции в WebView
.
Для этого выполните следующие шаги:
Установите одну из предварительных версий
WebView
(beta, dev или canary){:.external}.Переключите канал
WebView
на тестовом устройстве на установленный предварительный канал.Нажмите кнопку запуска WebView DevTools .
Рисунок 1. Значок WebView DevTools для приложения, установленного на устройстве. В DevTools выберите пункт «Флаги» и найдите все экспериментальные функции, которые вы хотите включить или отключить. Изменение применяется ко всем экземплярам
WebView
на устройстве.Остановите и перезапустите приложение, чтобы начать тестирование новых функций.
Дополнительную информацию о переключении флагов см. в документации WebView
DevTools .