我在做一个和拉斐尔有关的项目。事实证明,它在Android上不起作用。iPhone上是这样的。

我该怎么调试Android浏览器上的东西呢?它是WebKit,所以如果我知道版本,在完整版本的WebKit上调试它会产生相同的结果吗?


当前回答

更新:远程调试

以前,控制台日志记录是在Android上调试JavaScript的最佳选择。这些天有了Chrome for Android远程调试,我们可以利用Chrome for Android桌面开发工具的所有优点。查看https://developers.google.com/chrome-developer-tools/docs/remote-debugging获取更多信息。


更新:JavaScript控制台

您还可以在URL栏中导航到about:debug,以激活调试菜单和最新Android设备的JavaScript错误控制台。您应该在浏览器顶部看到SHOW JAVASCRIPT CONSOLE。

目前在Android 4.0.3 (Ice Cream Sandwich)中,logcat输出到浏览器通道。所以你可以使用adb logcat browser:* *:S进行过滤。


原来的答案

您可以使用内置的控制台JavaScript对象来打印可以使用adb logcat检查的日志消息。

console.error('1');
console.info('2');
console.log('3');
console.warn('4')

产生如下输出:

D/WebCore (  165): Console: 1 line: 0 source: http://...
D/WebCore (  165): Console: 2 line: 0 source: http://...
D/WebCore (  165): Console: 3 line: 0 source: http://...
D/WebCore (  165): Console: 4 line: 0 source: http://...

确定WebKit的版本

如果你在位置栏中输入javascript:alert(navigator.userAgent),你会看到WebKit的版本。

铬: Mozilla / 5.0(窗口;U;Windows NT 5.1;en-US) AppleWebKit/532.2 (KHTML,如Gecko) Chrome/4.0.221.6 Safari/532.2

在Android模拟器上 Mozilla / 5.0 (Linux;U;Android 1.6;en - us;AppleWebKit/528.5+ (KHTML,如Gecko) Version/3.1.2 Mobile Safari/525.20.1 . sdk Build/DRC76)

N.B.

不属于Safari版本的WebKit版本号后面有一个+号,它们的版本号通常高于最新发布的WebKit版本号。例如,528+是一个非官方的WebKit版本,比525更新。x版本,作为Safari 3.1.2的一部分发布。

其他回答

你可以试试npm library中的"javascript-compiler-deva",先运行"npm install javascript-compiler-deva"命令,然后运行编译器。正在使用"node compiler.js"。

它在端口8888上创建一个服务器。然后,您可以点击“http://localhost:8888”并输入JavaScript代码,就可以在手机浏览器中看到包括“console.log”在内的任何JavaScript代码的结果。

它也托管在“https://javascript-compiler-deva.herokuapp.com/”中。

更新:远程调试

以前,控制台日志记录是在Android上调试JavaScript的最佳选择。这些天有了Chrome for Android远程调试,我们可以利用Chrome for Android桌面开发工具的所有优点。查看https://developers.google.com/chrome-developer-tools/docs/remote-debugging获取更多信息。


更新:JavaScript控制台

您还可以在URL栏中导航到about:debug,以激活调试菜单和最新Android设备的JavaScript错误控制台。您应该在浏览器顶部看到SHOW JAVASCRIPT CONSOLE。

目前在Android 4.0.3 (Ice Cream Sandwich)中,logcat输出到浏览器通道。所以你可以使用adb logcat browser:* *:S进行过滤。


原来的答案

您可以使用内置的控制台JavaScript对象来打印可以使用adb logcat检查的日志消息。

console.error('1');
console.info('2');
console.log('3');
console.warn('4')

产生如下输出:

D/WebCore (  165): Console: 1 line: 0 source: http://...
D/WebCore (  165): Console: 2 line: 0 source: http://...
D/WebCore (  165): Console: 3 line: 0 source: http://...
D/WebCore (  165): Console: 4 line: 0 source: http://...

确定WebKit的版本

如果你在位置栏中输入javascript:alert(navigator.userAgent),你会看到WebKit的版本。

铬: Mozilla / 5.0(窗口;U;Windows NT 5.1;en-US) AppleWebKit/532.2 (KHTML,如Gecko) Chrome/4.0.221.6 Safari/532.2

在Android模拟器上 Mozilla / 5.0 (Linux;U;Android 1.6;en - us;AppleWebKit/528.5+ (KHTML,如Gecko) Version/3.1.2 Mobile Safari/525.20.1 . sdk Build/DRC76)

N.B.

不属于Safari版本的WebKit版本号后面有一个+号,它们的版本号通常高于最新发布的WebKit版本号。例如,528+是一个非官方的WebKit版本,比525更新。x版本,作为Safari 3.1.2的一部分发布。

你可以试试https://github.com/fullpipe/screen-log。试着让它简洁明了。

Android 5.1.1上Galaxy S6上的Android本机浏览器的全Chrome远程调试:

开启手机USB调试(设置,关于,快速点击版本号,开发人员设置,USB调试) 打开“网络” 导航到“about:debug”(你会看到一个错误) MORE菜单>设置>调试>远程调试 用USB数据线连接手机和电脑 在手机上,在Internet web浏览器中,打开要调试的站点 在电脑上打开Chrome 导航到'chrome://inspect' 单击要检查的浏览器选项卡上的“检查”

Galaxy S5设备可以在Chrome浏览器中显示,但标签页只有在重启后才能显示。重新启动并尝试连接后,移动浏览器崩溃。

关于:debug(或chrome:\\debug两者都表示页面无法找到,但启用设置中的debug菜单)在chrome或Opera上的Android KitKat 4.4.2在三星Tab上尝试时

如果您在设备上具有ROOT权限,则可以直接在设备上查看控制台消息。使用像CatLog这样的应用程序来查看日志输出- https://play.google.com/store/apps/details?id=com.nolanlawson.logcat&hl=en这将让你查看所有的logcat活动。

在Android KitKat/4.4.2中,浏览器控制台输出到Chromium通道。你可以通过“Chromium”来过滤所有的浏览器活动(包括浏览器的内部活动),或者简单地通过“Console”来过滤,只看到浏览器的控制台日志。

chromium [INFO:CONSOLE(3)]  "The key "x-minimal-ui" is not recognized and ignored.", source http://mywebsite.com/ (3)