我正在开展涉及Raphaeljs的项目。事实证明,它不适用于Android。它在iPhone上 。
我如何调试Android浏览器上的内容?它是WebKit,所以如果我知道该版本,将在完整的版本的WebKit上调试它会产生相同的结果吗?
答案 0 :(得分:232)
更新:远程调试
以前,控制台日志记录是在Android上调试JavaScript的最佳选择。目前,通过Chrome for Android远程调试,我们可以充分利用Android上适用于桌面开发者工具的Chrome的所有优点。查看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
进行过滤。
原始答案
您可以使用内置的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
N.B。
不属于Safari版本的WebKit版本在版本号后面有一个+,其版本号通常高于最新发布的WebKit版本。因此,例如,528 +是WebKit的非官方版本,比作为Safari 3.1.2的一部分提供的525.x版本更新。
答案 1 :(得分:134)
尝试:
在该页面上,在个人Android浏览器的地址栏中输入:
about:debug
(注意没有任何反应,但已启用了一些新选项。)
适用于我尝试过的设备。阅读Android browser's about:debug, what do those settings do?
的更多信息修改强> 什么也有助于检索更多信息,如行号是将此代码添加到您的脚本:
window.onerror = function (message, url, lineNo){
console.log('Error: ' + message + '\n' + 'Line Number: ' + lineNo);
return true;
}
答案 2 :(得分:52)
http://jsconsole.com(http://jsconsole.com/remote-debugging.html)提供了一种很好的方式来访问您网页的内容。
答案 3 :(得分:21)
我使用Weinre,Apache Cordova的一部分。
借助Weinre,我可以在桌面浏览器中使用Google Chrome的调试控制台,并可以将Android连接到该调试控制台,并调试HTML和CSS。我可以在控制台中执行Javascript命令,它们会影响Android浏览器中的Web页面。来自Android的日志消息显示在桌面调试控制台中。
但是我认为无法查看或单步执行实际的Javascript代码。所以我将Weinre与日志消息结合起来。
(我对JConsole了解不多,但在我看来,JConsole无法进行HTML和CSS检查,只有Javascript命令和日志记录(?)。)
答案 4 :(得分:18)
看看jsHybugger。它将允许您远程调试您的js代码:
这是如何工作的(项目网站上的更多细节和替代方案,这是我发现的最佳方式)。
同样,Android上的Chrome使用不带jsHybugger的ADB扩展程序。我认为已经在这个问题的接受答案中描述了这一点。
答案 5 :(得分:13)
仅供参考,RaphaelJS无法在Android上运行的原因是android webkit(与iPhone webkit不同)此时不支持SVG。谷歌最近才得出结论,SVG支持Android是一个好主意,所以它暂时还不可用。
答案 6 :(得分:13)
在Android 5.1.1上的Galaxy S6上对Android原生浏览器进行全Chrome远程调试:
Galaxy S5设备会在Chrome中显示,但只有重新启动后才能显示标签。重新启动并尝试连接后,移动浏览器崩溃。
答案 7 :(得分:5)
预装3.0 Android浏览器不支持Raphael,这就是你的问题所在。他们不支持SVG图形。它确实支持画布。如果您不需要为其设置动画,则可以使用canvg:
渲染图形http://code.google.com/p/canvg/
这就是我们如何解决在默认Android浏览器中渲染SVG图标的问题。
答案 8 :(得分:5)
加入地址行chrome://about
。您将看到指向所有可能的开发页面的链接。
答案 9 :(得分:4)
在三星标签上的Android KitKat 4.4.2上的Chrome或Opera上试用about:debug
(或chrome:\\debug
两者都说无法找到页面,但在设置中启用调试菜单
如果您的设备具有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)
答案 10 :(得分:2)
运行Android模拟器时,请打开Google Chrome浏览器,然后在地址栏中输入:
chrome://inspect/#devices
您将看到远程目标列表。找到您的目标,然后点击'检查'链接。
答案 11 :(得分:1)
我的解决方案是(对于股票浏览器):
答案 12 :(得分:1)
您可以尝试使用YConsole js嵌入式控制台。它重量轻,使用简单。
使用方法:
<script type="text/javascript" src="js/YConsole-compiled.js"></script>
<script type="text/javascript" >YConsole.show();</script>
答案 13 :(得分:0)
Android studio提供了查看console.log等所需的一切。在logcat中只需过滤到“/ Web Console”,您将看到您的js日志......
如果您遇到任何问题,可以添加此插件: https://github.com/apache/cordova-plugin-console
答案 14 :(得分:0)
如果您正在寻找非远程选项:
在早期和非根的Jellybean版本中,如果通过adb一次授予android.permission.READL_LOGS,则可以使用logcat查看器。
在Firefox上,有一个console addon可以读取并显示所有应用日志,还有firebug lite。
答案 15 :(得分:0)
您可以通过运行“ npm install javascript-compiler-deva”命令,然后运行编译器来尝试从npm库获得“ javascript-compiler-deva”。
它将在端口8888上创建一个服务器。然后您可以单击“ http://localhost:8888”并输入JavaScript代码,并可以在电话浏览器本身中查看任何JavaScript代码(包括“ console.log”)的结果。
答案 16 :(得分:0)
Chrome具有出色的功能,只需将实际的Android Chrome内容(包括检查等)带到PC屏幕上...
chrome://inspect/#devices
。网上也有详细的手册:https://www.till.net/technologie/html-javascript/remote-web-debugging-unter-android-und-chrome
(发现adb logcat
之后浏览器什么也没显示)
答案 17 :(得分:0)
本地调试/ about:config ...选项在2020+ chrome / ff / ..浏览器中似乎不再起作用。
另一个具有非远程js控制台的浏览器是 DevBrowser
或 WebInspector (文件选择器不起作用)
答案 18 :(得分:0)
没有人提到 liriliri/eruda,它添加了自己的用于移动网站/应用程序的调试工具
将此添加到您的页面:
<script src="//cdn.jsdelivr.net/npm/eruda"></script>
<script>eruda.init();</script>
将向您的页面添加一个浮动图标以打开控制台。
答案 19 :(得分:0)
你可以试试https://github.com/fullpipe/screen-log。试图让它干净和简单。
答案 20 :(得分:0)
有一个名为 OutFront JS 的 npm 插件,您可以使用它来调试移动浏览器。
它基本上将控制台中的所有消息、警告和错误记录到屏幕上的弹出窗口中。