【发布时间】:2013-01-29 09:04:15
【问题描述】:
我正在尝试在应用程序的 WebView 中运行 javascript。我正在 Nexus 7 上开发。
html / javascript 在 Chromium 上运行良好,但平板电脑上没有执行某些操作。有没有办法查看平板电脑上是否有任何 javascript 本身失败?一种控制台视图?
【问题讨论】:
标签: javascript android webview
我正在尝试在应用程序的 WebView 中运行 javascript。我正在 Nexus 7 上开发。
html / javascript 在 Chromium 上运行良好,但平板电脑上没有执行某些操作。有没有办法查看平板电脑上是否有任何 javascript 本身失败?一种控制台视图?
【问题讨论】:
标签: javascript android webview
您实际上可以从 WebView 接收控制台消息,这将允许您捕获它引发的错误。
这样做:
例子:
final WebView webView = (WebView) findViewById(R.id.webview_terms_conditions);
WebSettings webSettings = webView.getSettings();
webSettings.setJavaScriptEnabled(true);
webView.setWebChromeClient(new WebChromeClient() {
@Override
public boolean onConsoleMessage(ConsoleMessage consoleMessage) {
Log.d("MyApplication", consoleMessage.message() + " -- From line "
+ consoleMessage.lineNumber() + " of "
+ consoleMessage.sourceId());
return super.onConsoleMessage(consoleMessage);
}
});
webView.loadUrl(getString(R.string.url_terms_conditions));
类似于它所说的 here,尽管该文档不完整并且使用了已弃用的方法。
在Android KitKat上运行时,也可以enable remote debugging!
【讨论】:
WebChromeClient() 和 WebViewClient 的区别。所以如果你没有看到onConsoleMessage 那是因为你找错了客户 ;-)
onConsoleMessage 只有在应用程序可调试时才会被调用。另请参阅:bugs.chromium.org/p/chromium/issues/detail?id=905251 Chromium 也不会输出到 Logcat。
你可以使用Remote Debugging WebViews
Chrome Devtools Remote Debugging
使用 Chrome 开发者工具在您的原生 Android 应用程序中调试 WebView。
在 Android 4.4 (KitKat) 或更高版本上,使用 DevTools 调试原生 Android 应用程序中的 WebView 内容。
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
WebView.setWebContentsDebuggingEnabled(true);
}
【讨论】:
您也许可以使用Firebug lite。它只是一个书签,因此您可以在任何页面上打开它。
另外,请搜索还有很多其他类似的问题:
【讨论】:
在 Android Studio "Arctic Fox" 中,只需查看 logcat。带有“cromium”标签的消息。
【讨论】: