您可以使用 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
预发布渠道(Beta 版、开发者版或 Canary 版)。{:.external}在测试设备上将
WebView
渠道切换到已安装的预发布渠道。点击 WebView 开发者工具启动器。
图 1. 设备上安装的应用的 WebView 开发者工具图标。 在开发者工具中,点击 Flags 项,然后搜索您要启用或停用的任何实验性功能。相应更改会应用于设备上的所有
WebView
实例。停止并重新启动应用,即可开始测试新功能。
如需详细了解如何切换标志,请参阅 WebView
开发者工具文档。