您可以使用 console
JavaScript API 调试您的 JavaScript,并在 Logcat 中查看输出消息。如果您熟悉使用 Firebug 或 Web Inspector 调试网页,那么您可能熟悉使用 console
(例如 console.log()
)。Android 的 WebKit 框架支持大多数相同的 API,因此您可以在 WebView
中调试时从您的网页接收日志。本节介绍如何使用控制台 API 进行调试。
在 WebView 中使用控制台 API
在 WebView
中进行调试时,也支持控制台 API。您必须提供一个实现 onConsoleMessage()
方法的 WebChromeClient
,以便控制台消息显示在 Logcat 中。然后,使用 setWebChromeClient()
将 WebChromeClient
应用于您的 WebView
。有关更多信息,请参阅 Webview
文档。
以下示例显示如何在 WebView
中使用控制台 API
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; } });
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
以下是与调试相关的其他资源
测试实验性 Web 功能
类似于 Google Chrome 的 chrome://flags
页面,您也可以在 WebView
中测试实验性 Web 功能。
为此,请执行以下步骤
安装
WebView
预发布通道之一(测试版、开发版或金丝雀版){: .external}。将测试设备上的
WebView
通道切换 到已安装的预发布通道。点击WebView DevTools 启动器
在 DevTools 中,点击Flags 并搜索您想要启用或禁用的任何实验性功能。更改适用于设备上的所有
WebView
实例。停止并重新启动您的应用以开始使用新功能进行测试。
有关切换标志的更多信息,请参阅 WebView
DevTools 文档。