STe*_*TeN 27 javascript android web-applications mobile-website android-logcat
我正在开发HTML中的应用程序,它正在调用console.log()Javascript来为我提供开发过程中关于网页代码中发生的事情的日志.
不幸的是,当我使用adb logcat命令检查日志时,我可以看到来自所有其他应用程序的输出,但不能看到我的JavaScript代码的输出.我甚至可以从Web浏览器看到加载页面的日志,但不能console.log()从我在Web浏览器中执行的JavaScript代码输出.
根据此页面上的信息(http://developer.android.com/guide/webapps/debugging.html),它应该可以工作.
我正在测试HTC WildFire和HTC Desire HD.
超过6个月后编辑
经过一段时间和使用不同设备(手机,电视,机顶盒,WebViews,UIWebViews ......)的经验,我的建议是从JavaScript 进行远程日志记录而不依赖于console.log()或其他方法 - 请参阅在这里加载图像的好方法.
不要错过这里的演示 希望这有帮助!斯登
thr*_*flo 30
在Android 2.3.3的默认浏览器中(可能从那时开始),您可以简单地使用内置的JavaScript控制台:
about:debug在地址栏并回车在顶部,您会看到标有"JavaScript控制台"的栏.
Jon*_*han 12
我一直在使用三种不同的HTC手机,几乎完全没有这个问题.以下是一些要检查的事项:
打开USB调试:
设置一个覆盖onConsoleMessage()的WebChromeClient:
//Set the output prefix so you can filter adb logcat results later
public static final String TAG = "Your-Application-Name";
myWebView = (WebView) findViewById(R.id.webview);
//Not going to have much luck running JS without this:
myWebView.getSettings().setJavaScriptEnabled(true);
//Override onConsoleMessage() to output to the Log.
myWebView.setWebChromeClient(new WebChromeClient() {
@Override
public boolean onConsoleMessage(ConsoleMessage cm) {
Log.d(TAG, cm.message() + " -- From line "
+ cm.lineNumber() + " of "
+ cm.sourceId() );
return true;
}
});
Run Code Online (Sandbox Code Playgroud)
有关onConsoleMessage()的更多信息: http://developer.android.com/reference/android/webkit/WebChromeClient.html#onConsoleMessage(java.lang.String,int,java.lang.String)
有关调试的更多信息,请访问:http://developer.android.com/guide/webapps/debugging.html
过滤adb logcat的输出:
adb logcat tag-name:log-level *:S
Run Code Online (Sandbox Code Playgroud)
tag-name与Log.x日志级别中指定的字符串匹配,与调用Log.x时指示的日志级别相匹配<---
与上述代码有关的示例:
adb logcat Your-Application-Name:D *:S
Run Code Online (Sandbox Code Playgroud)
这将显示匹配标记的所有d级日志,Your-Application-Name,并使其他所有内容静音.
有关adb过滤的更多信息,请访问:http: //developer.android.com/guide/developing/tools/adb.html#logcat
希望能帮助到你!我知道这是对其他答案的总结,但事实是,它需要所有步骤才能使其发挥作用.:)
我有同样的问题,我通过执行以下操作解决它:
1 /初始化webview时,添加一个javascript桥类:
appView.addJavascriptInterface(new JSBridge(), "JSBridge");
Run Code Online (Sandbox Code Playgroud)
2 /使用日志功能创建JSBridge类
class JSBridge {
public void log(String msg){
Log.d(msg);
}
}
Run Code Online (Sandbox Code Playgroud)
3 /在您的javascript中,您现在可以拨打电话
JSBridge.log("my log message");
Run Code Online (Sandbox Code Playgroud)
可能对您的问题有点矫枉过正,但您也可以使用该解决方案做更多事情
| 归档时间: |
|
| 查看次数: |
28920 次 |
| 最近记录: |