moc*_*kee 82 javascript debugging xcode ios cordova
我想在Xcode中调试我的PhoneGap应用程序,但其控制台无法显示javascript错误.
ᴠɪɴ*_*ᴇɴᴛ 82
在Cordova/PhoneGap应用程序中查看和调试JavaScript错误的最优雅方法是将Web Inspector从Safari浏览器附加到iOS应用程序中的Web View(但是,就像Tom Clarkson已经提到的那样,您至少需要iOS 6 ).

关于设置的苹果文档:https://developer.apple.com/library/content/documentation/AppleApplications/Conceptual/Safari_Developer_Guide/GettingStarted/GettingStarted.html
完整的第三方教程:http:
//webdesign.tutsplus.com/tutorials/workflow-tutorials/quick-tip-using-web-inspector-to-debug-mobile-safari/
或者,您可以在安装调试代理后将Chrome的Web Inspector连接到iOS设备:https://github.com/google/ios-webkit-debug-proxy/.这也开启了从Linux进行检查的能力.甚至可以通过具有专用Chrome代理的Windows远程访问iOS的HTML,CSS和JavaScript:https://github.com/artygus/ios-webkit-debug-proxy-win32.
顺便说一句,使用Safari Web Inspector进行远程调试也可以与iOS模拟器结合使用.
对于每个版本的iOS,您需要特定的Desktop Safari最低版本才能使用远程Web检查,请参阅下面的列表.
elM*_*uis 46
将以下内容粘贴到文档开头附近,以便在任何其他JavaScript之前执行.
<script type="text/javascript">
window.onerror = function(message, url, lineNumber) {
console.log("Error: "+message+" in "+url+" at line "+lineNumber);
}
</script>
Run Code Online (Sandbox Code Playgroud)
并享受在Xcode控制台窗口中查看Javascript错误的详细信息.
更新:上述技术将记录未定义变量等错误.但是语法错误(例如缺少逗号)仍会导致整个脚本在没有记录任何内容的情况下中断.
因此,您应该将以下内容添加到onDeviceReady函数的开头:
console.log('Javascript OK');
Run Code Online (Sandbox Code Playgroud)
如果您在应用程序启动时没有在日志窗口中看到"JavaScript OK",则表示您在某处出现语法错误.
为了节省缺少逗号的搜索,最简单的方法是将代码粘贴到Javascript验证器中,例如:
http://www.javascriptlint.com/online_lint.php
让它为你找到错误.
希望这会带来一些调试的痛苦.
请注意,对于0.9.2(今天发布),console.log已在各个平台上标准化以进行日志记录(不推荐使用debug.log).
桌面WebView上有一个功能可以在iOS UIWebView中公开,它将捕获所有错误(我试图将该功能破解为插件,该插件使用私有API,但该插件仅用于开发),但是现在做Kris上面提到的并在代码上放置try catch块并使用console.log
为了快速捕获可能的语法错误,在开发时我已经在桌面Safari中加载了页面并使用webkit错误控制台可以快速刷新它.
debug.log 会将消息发送到 Phonegap 中的 XCode 控制台(允许您记录异常结果或进行一些调试),但是,您必须在 Safari 中调试其他 javascript 错误(无论是在桌面上还是在桌面上),这是正确的。在打开调试控制台的 iPhone 上)。我还没有发现 Javascript 错误,该错误是由在 iphone 上运行引起的,并且在 Safari 中打开控制台进行调试时不存在(尽管我知道 iphone 上的 WebView 和 Safari 之间存在一些差异)。
| 归档时间: |
|
| 查看次数: |
63155 次 |
| 最近记录: |