我怎样才能在Android上debuggingJavaScript?
我正在做一个涉及Raphaeljs的项目。 事实certificate,它不适用于Android。 它在iPhone上。
在Android浏览器上debugging某些东西到底是怎么回事? 这是WebKit,所以如果我知道这个版本,那么在WebKit的完整版本上debugging它会产生相同的结果?
更新:远程debugging
以前,控制台日志logging是在Android上debuggingJavaScript的最佳select。 现在,通过Chrome进行Android远程debugging,我们可以充分利用Android上Chrome for Desktop开发人员工具的所有优点。 查看https://developers.google.com/chrome-developer-tools/docs/remote-debugging了解更多信息。;
更新:JavaScript控制台
您还可以导航到about:debug在URL栏中以激活debugging菜单和JavaScript错误控制台与最新的Android设备。 您应该在浏览器顶部看到SHOW JAVASCRIPT CONSOLE。
目前在Android 4.0.3(冰淇淋三明治),logcat输出到浏览器频道。 所以你可以使用adb logcat browser:* *:S
进行过滤adb logcat browser:* *:S
。
原始答复
您可以使用内置的console
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版本,例如
在Chrome: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Chrome/4.0.221.6 Safari/532.2
Android模拟器Mozilla/5.0 (Linux; U; Android 1.6; en-us; sdk Build/DRC76) AppleWebKit/528.5+ (KHTML, like Gecko) Version/3.1.2 Mobile Safari/525.20.1
NB
不属于Safari发行版的WebKit版本在版本号后有一个+,版本号通常比最新发布的WebKit版本高。 因此,例如,528+是WebKit的非官方版本,比Safari 3.1.2的一部分发布的525.x版本更新。
尝试:
- 打开你想debugging的页面
-
而在该页面上,在股票Android浏览器的地址栏中键入:
about:debug
(注意什么都没有发生,但是一些新的选项已经被启用。)
在我尝试过的设备上工作。 有关Android浏览器的更多信息,请参阅:debug,这些设置有什么作用?
编辑:什么也有助于检索更多的信息,如行号是将此代码添加到您的脚本:
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 , Apache Cordova的一部分。
通过Weinre,我可以在我的桌面浏览器中获得Google Chrome的debugging控制台,并且可以将Android连接到该debugging控制台,以及debuggingHTML和CSS。 我可以在控制台执行Javascript命令,它们会影响Android浏览器中的网页。 来自Android的日志消息显示在桌面debugging控制台中。
不过,我认为不可能查看或逐步通过实际的Javascript代码。 所以我把Weinre与日志消息结合起来。
(我对JConsole不太了解,但是在我看来,使用JConsole,只有Javascript命令和日志logging(?),HTML和CSS检查是不可能的。)
看看jsHybugger 。 它将允许您远程debugging您的js代码:
- Android混合应用程序 (webview,phonegap,worklight)
- 在默认的Android浏览器中运行的网页 (不是Chrome浏览器,它不支持使用此工具的ADB扩展)
这是如何工作的(项目网站上有更多的细节和备选scheme,这是我发现的最好的方法)。
- 在您的设备上安装jsHybugger APK
- 在您的设备上启用USBdebugging。
- 将Android设备通过USB插入桌面电脑
- 在Android设备上运行应用程序('jsHybugger')
- 在应用中input目标url和页面。 按开始服务,最后打开浏览器
- 您将看到已安装的浏览器列表,请select一个。
- 浏览器启动。
- 回到台式电脑上打开Chrome浏览器chrome:// inspect /
- 将出现一个检查器窗口,其中的chromedebugging工具链接到Android设备上的页面。
- debugging了!
同样,Android上的Chrome使用不带jsHybugger的ADB扩展。 我想这已经在接受的这个问题的答案中描述过了。
仅供参考,RaphaelJS在android上不工作的原因是android webkit(不像iPhone webkit)目前不支持SVG。 谷歌最近才得出这样一个结论:SVG支持一个android是一个好主意,所以一段时间以后它将不可用。
Android 5.1.1上的Galaxy S6上的Android本机浏览器的全面Chrome远程debugging:
- 在手机上启用USBdebugging(设置,关于,快速点击内部版本号,开发人员设置,USBdebugging)
- 打开“Internet”
- 导航到“about:debug”(你会看到一个错误)
- 更多菜单>设置>debugging>远程debugging
- 用USB线将手机连接到电脑
- 在电话上,在互联网浏览器中,打开您要debugging的网站
- 在电脑上打开Chrome
- 导航到“chrome://检查”
- 点击您要检查的浏览器选项卡上的检查
Chrome浏览器显示Galaxy S5设备,但只有在重新启动后才会显示选项卡。 重新启动并尝试附加后,移动浏览器崩溃。
在3.0之前的Android浏览器中不支持Raphael,这就是你的问题所在。 他们不支持SVGgraphics。 它确实支持canvas。 如果你不需要animation,你可以使用canvg渲染graphics:
http://code.google.com/p/canvg/
这就是我们如何解决这个问题,以在默认的Android浏览器中呈现SVG图标。
放入地址行chrome://about
。 你会看到所有可能的开发页面的链接。
about:debug
在Chrome上试用Chrome或Opera KitKat 4.4.2时,在Samsung Tab上尝试使用about:debug
(或chrome:\\debug
两者都表示无法find页面,但在设置中启用“debugging”菜单)
如果您的设备具有ROOT权限,则可以直接在设备上查看控制台消息。 使用CatLog这样的应用程序来查看日志输出 – https://play.google.com/store/apps/details?id=com.nolanlawson.logcat&hl=zh-CN这将让您查看所有的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)
你可以试试YConsole的一个jsembedded式控制台。 它重量轻,使用简单。
- 捕获日志和错误。
- 对象编辑器。
如何使用 :
<script type="text/javascript" src="js/YConsole-compiled.js"></script> <script type="text/javascript" >YConsole.show();</script>
根据这个链接 ,javascriptdebugging可以通过下载链接中提到的firebug.js
文件来完成,并将下载的文件加载到您的HTML页面中,以便您可以在没有任何诉诸Internet的情况下进行debugging。
我的解决scheme是(股票浏览器):
- 股票浏览器
- 将“consolo.log”导入到JS源代码中
- debuggingUSB启用
- Android SDK
- 从Android SDK:monitor.bat
- 监视filter作为附加的图像
如果你正在构build一个“混合”应用程序(cordova),CrossWalk插件利用谷歌色彩networking视图,而不是android自带的标准互联网networking视图。 当我安装插件时,它具有debugging的能力。
人行横道
Android Studio提供了所有你需要看到的console.log等。 在logcat只是过滤到“/ Web控制台”,你会看到你的JS日志…
如果你有任何问题,你可以添加这个插件: https : //github.com/apache/cordova-plugin-console
如果您正在寻找非远程选项:
在较早的和非根的Jellybean版本中,如果android.permission.READL_LOGS通过adb被授予一次,则可以使用logcat查看器。
在Firefox上,有一个控制台插件 ,读取和显示所有的应用程序日志,也有萤火虫精简版 。
mobile-console-log允许您从任何设备显示任何console.log到Chrome Devtools。
- 什么是-webkit-transform:translate3d(0,0,0); 正好呢? 适用于身体?
- 使用Javascriptvariables设置Webkit关键帧值
- 使用Javascript加载图片时,iPad / iPhone浏览器崩溃
- 使用jQuery.browser区分Chrome和Safari
- 有没有办法从Cocoa WebView对象使用WebKit Web检查器?
- INVALID_STATE_ERR:DOM例外11(WebKit)
- CSS3连续旋转animation(就像加载日</s>)
- 跆拳道是跆拳道? (在WebKit代码库中)
- 在页面加载的第一个“焦点”事件Safari浏览器抖动/跳跃(bug?)