我在做一个和拉斐尔有关的项目。事实证明,它在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的一部分发布。


仅供参考,RaphaelJS不能在android上运行的原因是android webkit(不像iPhone webkit)此时不支持SVG。谷歌最近才得出结论,SVG支持android是一个好主意,所以它在一段时间内还不会可用。


试一试:

打开要调试的页面 而在该页面上,在普通Android浏览器的地址栏中输入: :调试 (注意什么都没有发生,但是启用了一些新的选项。)

在我试过的设备上都有效。阅读更多关于Android浏览器:调试,这些设置做什么?

编辑: 在脚本中添加以下代码也有助于检索更多信息,如行号:

window.onerror = function (message, url, lineNo){
    console.log('Error: ' + message + '\n' + 'Line Number: ' + lineNo);
    return true;
}

http://jsconsole.com (http://jsconsole.com/remote-debugging.html)提供了一种很好的方式,您可以使用它来访问您的网页内容。


我用Weinre,阿帕奇科多瓦的一部分。

使用Weinre,我可以在桌面浏览器中获得谷歌Chrome的调试控制台,并可以将Android连接到该调试控制台,并调试HTML和CSS。我可以在控制台中执行Javascript命令,这些命令会影响Android浏览器中的Web页面。来自Android的日志消息出现在桌面调试控制台中。

然而,我认为这是不可能查看或逐步通过实际的Javascript代码。所以我把Weinre和日志信息结合起来。

(我对JConsole了解不多,但在我看来,用JConsole检查HTML和CSS是不可能的,只有Javascript命令和日志记录(?))


Raphael在3.0之前的Android浏览器上不支持,这就是你的问题所在。它们不支持SVG图形。不过它确实支持canvas。如果你不需要动画,你可以用canvas渲染图形:

http://code.google.com/p/canvg/

这就是我们如何在默认Android浏览器中呈现SVG图标的方法。


看一看jsHybugger。它将允许你远程调试你的js代码:

Android混合应用(webview, phonegap, worklight) Web页面运行在默认的android浏览器(不是Chrome,它支持ADB扩展没有这个工具)

这是如何工作的(在项目网站上有更多的细节和替代方案,这是我发现的最好的方法)。

Install the jsHybugger APK on your device Enable USB debugging on you device. Plug the Android device into your desktop computer via USB Run the app on the Android device ('jsHybugger') Enter the target URL and page in the app. Press Start Service and finally Open Browser You'll be presented with a list of installed browsers, choose one. The browser launches. Back on your desktop computer open Chrome to chrome://inspect/ An inspectors window will appear with the chrome debugging tools linked to the page on the Android device. debug away!

同样,在Android上使用Chrome使用ADB扩展而不使用jsHybugger。我想这个问题的公认答案已经描述过了。


关于: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)

我的解决方案是(对于普通浏览器):

股票的浏览器 " console .log"导入JS源代码 启用调试USB Android SDK 来自Android SDK: monitor.bat 监控过滤器作为附加的图像


你可以尝试YConsole一个js嵌入式控制台。它重量轻,使用简单。

捕获日志和错误。 对象编辑器。

使用方法:

<script type="text/javascript" src="js/YConsole-compiled.js"></script>
<script type="text/javascript" >YConsole.show();</script>

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

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

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


Android工作室提供所有你需要看到console.log和其他。在logcat中,只要过滤到“/Web Console”,你就会看到你的js日志…

如果你遇到任何问题,你可以添加这个插件: https://github.com/apache/cordova-plugin-console


放入地址行chrome://about。您将看到指向所有可能的开发页面的链接。


如果您正在寻找非远程选项:

在早期和非根的Jellybean版本中,如果android.permission. logcat viewer可以使用。READL_LOGS通过adb授权一次。

在firefox上,有一个控制台插件可以读取并显示所有应用程序日志,还有firebug lite。


当运行Android模拟器时,打开你的谷歌Chrome浏览器,在“地址字段”中输入:

chrome://inspect/#devices

您将看到远程目标列表。找到你的目标,然后点击‘inspect’链接。


你可以试试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/”中。


Chrome有一个很棒的功能,可以简单地将实际的Android Chrome内容(包括检查等)显示到PC屏幕上…

在设备上打开USB调试,也许你还需要通过adb设备连接一次,以触发移动设备上的“允许与…通信”对话框, 将Android设备连接到PC上, 在两者上启动Chrome,然后 然后浏览chrome://inspect/# PC上的设备。 这里列出了来自手机Chrome的标签,可以检查。

网上也有详细的手册:https://www.till.net/technologie/html-javascript/remote-web-debugging-unter-android-und-chrome

(发现adb logcat在浏览器中什么都没有显示)


本地调试/about:config…选项似乎在2020+ chrome/ff/..浏览器了。

另一个带有非远程js控制台的浏览器是 DevBrowser

或 WebInspector (文件选择器不工作)


没有人提到liriliri/eruda,它为移动网站/应用程序添加了自己的调试工具

将此添加到您的页面:

<script src="//cdn.jsdelivr.net/npm/eruda"></script>
<script>eruda.init();</script>

将在打开控制台的页面中添加一个浮动图标。


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


试试“vconsole”,也许能帮到你


“Kiwi浏览器”拥有与桌面chrome浏览器相同的工具,并且可以在android上进行本地调试-不需要usb。 加载html文件,并在菜单中选择“开发人员工具”。如果需要重新启动调试,请重新加载html。