我想用Xcode调试PhoneGap应用程序,但其控制台无法显示javascript错误。
Answers:
在Cordova / PhoneGap应用程序中查看和调试JavaScript错误的最优雅的方法是将Safari浏览器中的Web Inspector附加到iOS应用程序中的Web视图(但是,就像已经提到的Tom Clarkson一样,您至少需要iOS 6 )。
另外,您可以在安装iOS WebKit调试代理后将Chrome的Web检查器连接到iOS设备。这也使您可以从Linux或Windows进行检查。
由于您可以在上述调试代理的顶部安装RemoteDebug iOS WebKit适配器,因此如今远程访问iOS的HTML,CSS和JavaScript变得更加灵活。因为此适配器将WebKit远程调试协议转换为Chrome调试协议,所以这些(在所有受支持的平台上)可以用作替代的调试和检查工具:
顺便说一句,使用Safari Web Inspector进行远程调试甚至可以与iOS Simulator结合使用。
对于每个iOS版本,您都需要特定的最低版本的Desktop Safari才能使用远程Web检查,请参阅下面的列表。
将以下内容粘贴到文档开头附近,以使其在您的其他JavaScript之前执行。
<script type="text/javascript">
window.onerror = function(message, url, lineNumber) {
console.log("Error: "+message+" in "+url+" at line "+lineNumber);
}
</script>
并在Xcode控制台窗口中查看有关Javascript错误的详细信息。
更新:以上技术将记录错误,例如未定义的变量。但是语法错误(例如缺少逗号)仍然会导致整个脚本中断,而不会记录任何内容。
因此,应将以下内容添加到onDeviceReady函数的开头:
console.log('Javascript OK');
如果在应用启动时未在日志窗口中看到“ JavaScript OK”,则表明您的某个地方存在语法错误。
为了避免寻找缺少的逗号,最简单的方法是将您的代码粘贴到这样的Javascript验证程序中:
http://www.javascriptlint.com/online_lint.php
让它为您找到错误。
希望这可以减轻调试的麻烦。
请注意,在0.9.2(今天发布)中,console.log已在跨平台的记录中标准化(不建议使用debug.log)。
桌面WebView上有一个可用的功能,该功能未捕获到iOS UIWebView中,该功能将捕获所有错误(我试图将该功能破解到使用私有API的插件中,但是该插件仅用于开发),但现在执行Kris上面建议的操作,然后在代码中尝试catch块并使用console.log
为了快速捕获可能的语法错误,在开发时,我将页面加载到了桌面Safari中,并使用可见的Webkit错误控制台快速刷新了页面。
我刚遇到韦恩
这是用于phonegap的远程javascript调试器。您可以设置自己的Weinre服务器,也可以使用http://debug.phonegap.com/上的服务器
看起来效果很好-到目前为止印象非常深刻。
如果您使用的是iOS 6,则只需将safari网络检查器(在桌面safari的开发菜单上)连接到您的应用即可获得完整的javascript调试功能。
在几个方面,它有一些局限性-启动错误和插件调用-但它在几乎所有其他方面都很有效。
为了使JavaScript调试在Xcode中工作,我将看以下内容。
http://phonegap.com/2011/05/18/debugging-phonegap-javascript/
http://www.daveoncode.com/2010/01/12/debugging-phonegap-applications-using-xcode-console/
就其他故障排除而言...
首先,您可以在PC上的safari中运行该应用程序,并利用safari的调试器(或chrome,因为两者都运行类似的渲染引擎)。这不会遇到高级逻辑错误和许多api问题,但至少应该可以帮助解决许多问题(基本javascript,HTML5等。)。
要查看JavaScript控制台中的所有错误,我同意使用此事件监听器
<script type="text/javascript">
window.onerror = function(err,fn,ln) {alert("ERROR:" + err + ", " + fn + ":" + ln );};
var errorVar = objectDoesntExists.properyDoesntExist;//this will simulate an error
</script>
但是,除非安装了cordova插件,否则它将不会在XCodes“控制台”上显示。转到项目文件夹并输入以下内容:
? cordova plugin add cordova-plugin-console
这将允许javascript命令'console.log('some string')在XCode上显示。
注意,您将需要git等。但是,如果您要在xcode中编辑phonegap项目,则很可能会拥有它!
PS确保在使用console.log之前先放置cordova.js脚本插件
<script type="text/javascript" src="/cordova.js"></script>
这是一种对我有用的简单方法:
通过调用(使用python 2.7)使用python启动http服务器:
python -m SimpleHTTPServer
通过在浏览器中输入HTTPServer的地址来查看野生动物园中的页面,对我来说URL为:
http://0.0.0.0:8000/
开放的开发人员工具:
在chrome中,这是alt + command + i。查看控制台选项卡,可能需要刷新页面。
在Safari中:Safari->首选项->高级->选中“显示开发菜单”。开发菜单->显示错误控制台(或alt + command + c)。刷新页面。按CTRL + 5会打开“问题”选项卡。