HTC Android设备和adb logcat上的Javascript console.log()
我正在用HTML开发这个应用程序,它从Javascript调用HTC Android设备和adb logcat上的Javascript console.log(),javascript,android,web-applications,mobile-website,android-logcat,Javascript,Android,Web Applications,Mobile Website,Android Logcat,我正在用HTML开发这个应用程序,它从Javascript调用console.log(),在开发过程中为我提供关于网页代码中发生了什么的日志 不幸的是,当我使用adb logcat命令检查日志时,我可以看到所有其他应用程序的输出,但不能看到JavaScript代码的输出。我甚至可以从web浏览器中看到加载页面的日志,但不能从web浏览器中执行的JavaScript代码中看到console.log()输出 根据()上的信息,它应该可以工作 我正在测试HTC WildFire和HTC Desire
console.log()
,在开发过程中为我提供关于网页代码中发生了什么的日志
不幸的是,当我使用adb logcat
命令检查日志时,我可以看到所有其他应用程序的输出,但不能看到JavaScript代码的输出。我甚至可以从web浏览器中看到加载页面的日志,但不能从web浏览器中执行的JavaScript代码中看到console.log()
输出
根据()上的信息,它应该可以工作
我正在测试HTC WildFire和HTC Desire HD
超过6个月后编辑 在使用不同的设备(电话、电视、机顶盒、网络视图、UIWebView…)一段时间后,我的建议是从JavaScript执行远程日志记录,而不是依赖控制台.log()或其他方法-查看图像加载的好技巧 不要错过这次演讲 希望这有帮助! 请尝试以下方法: 1) 打开“设备”选项卡,确保已选择/突出显示已连接的设备 2) 确保设备上已启用USB调试。以下是您需要为此执行的操作: 2a)在主屏幕上,按MENU,然后点击Settings>Applications>Development 2b)确保选中USB调试复选框
除了你的设备,Logcat还会在设备上生成很多东西,所以你可能需要过滤这些东西 如果您已标记日志输出,则可以尝试“grep”日志输出。 例如:根据您的文章,输出应该如下所示:
Console: Hello World http://www.example.com/hello.html :82
如果您使用该命令(假设您使用的是Linux、Mac OS或任何其他grep命令)
它会将输出减少到这些引号内指定的关键字。如果您向输出中添加了一个唯一的标记,您还可以对其进行过滤,这样您就可以只看到您想看到的内容
[ctrl]+c
将停止此logcat进程。请参阅:
似乎已禁用console.log
在运行安卓2.2的HTC设备上
您可以使用in来绕过它。我也遇到了同样的问题,我通过执行以下操作来解决它: 1/初始化webview时,添加javascript桥接类:
appView.addJavascriptInterface(new JSBridge(), "JSBridge");
2/使用日志函数创建类JSBridge
class JSBridge {
public void log(String msg){
Log.d(msg);
}
}
3/在javascript中,您现在可以调用
JSBridge.log("my log message");
对你的问题来说可能有点过分了,但你也可以用这个解决方案做更多的事情我一直在使用三款不同的HTC手机,几乎都是独家使用的,从来没有出现过这个问题。以下是一些需要检查的事项:
//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;
}
});
adb logcat tag-name:log-level *:S
//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;
}
});
adb logcat tag-name:log-level *:S
有关OnConsolleMessage()的详细信息,请参见:,int,java.lang.String)
有关调试的详细信息,请参见此处:
过滤adb logcat的输出:
//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;
}
});
adb logcat tag-name:log-level *:S
标记名与Log.x中指定的字符串匹配
日志级别与您在Android 2.3.3上的默认浏览器中调用log.x时指定的日志级别相匹配(从那时起可能是这样),您只需使用内置javascript控制台即可:
- 打开浏览器
- 转到您的网页
- 在地址栏中键入
,然后按enter键about:debug
- 如果进入浏览器应用程序的设置,将显示调试选项部分
- 如果尚未启用,请勾选“显示JavaScript控制台”
- 刷新网页
在顶部,您将看到一个标有“JavaScript控制台”的栏。请提供您的代码。您是否尝试了上面发布的页面上的方法?您好,我在许多地方仅从JavaScript调用了console.log()方法,例如console.log(“[Go to details]”);,没别的了。顺便说一句,我使用的是Sencha Touch框架,但不应该影响任何东西……我使用的是HTC Droid,而且无法让console.log正常工作。当我使用emulator console.log时,它会正常工作并将所有内容路由到logcat,但当我直接在设备上尝试时,它不会。我遇到了HTC Evo-console.log(以及console.error、console.warn和console.info)在logcat中不显示的类似问题。同样的程序在emulator、Nexus One和Motorola DroidSimular上显示得很好。在运行应用程序之前,还需要清除日志。有时,logCat缓冲区已满,它会在日志出现时立即清除所有日志。(它们看起来像一道闪光)这很酷。不幸的是,它似乎不在我拥有的任何安卓设备上:摩托罗拉Xoom WiFi运行安卓3.2三星Galaxy S(SGH-I897)运行安卓2.2三星Galaxy S(SGH-I897)运行安卓2.1三星Galaxy Tab(第一个)运行安卓2.1 Javascript已启用。我似乎找不到任何关于这个的“官方”文件。你知道我在哪里能找到一些吗?我想知道为什么我错过了!谢谢,谢谢你,thruflo!这在运行安卓2.3.6的Nexus S上对我很有效。我喜欢这个解决方案,因为我可以继续使用simple console.log()方法(我喜欢simple;-),而不需要添加JS日志框架。注意:在输入about:debug之后,我花了一分钟才意识到Javascript控制台是可用的。它在窗口顶部显示为一个细条。触摸它可以扩展它。+1我从来不知道
关于:debug
我有一个HTC愿望2.3