我试图找出为什么使用Javascript的东西在UIWebView中不起作用.据我所知,没有办法在XCode中为js文件设置断点.没问题,我将回到2004年并使用警报状态 - 哦等等他们似乎也不在UIWebView内部工作!
我唯一能想到的是将我的HTML和JS文件导出到我的桌面,然后在Safari中进行调试.这有效!但是,当然,我在UIWebView中遇到的错误在Safari中不会发生.
是否还有其他方法可以在UIWebView内部进行调试,或者使用类似于使用老派警报方法的任何技巧?
如果你使用iOS> = 6并且你有山狮(10.8)或Safari> = 6,你可以:
在模拟器中打开应用程序(或在XCode> = 4.5.x中打开您的设备).
打开Safari(转到Preferences -> Advanced
并确保"在菜单栏中显示开发菜单"已启用.
从菜单栏(Safari)中选择Develop -> iPhone Simulator -> [your webview page]
.
而已 !
这个查询高于谷歌,因此值得链接到iOS5中隐藏的remoteInspector - 到目前为止调试UIWebViews的最佳方法 - 只是在发送给Apple之前有条件编译.
alert()肯定对我有用.
但是,您还可以执行许多其他操作,例如在层中弹出自己的DHTML警报.这可能很好,因为您可以对单个div执行多个警报,而无需停止您的应用程序.你也应该能够堆栈跟踪写它(堆栈跟踪是在异常对象,你可以随时抛出自己的例外).
或者,如果在模拟器上运行,您的自定义"alert()"可以调用目标C,并在iPhone模拟器的控制台窗口中显示该字符串:
document.location.href = "http://debugger/" + encodeURIComponent(outputString);
在目标C方面:
//-------------------------------------------------------------------- - (BOOL)webView:(UIWebView*)webView shouldStartLoadWithRequest: (NSURLRequest*)req navigationType:(UIWebViewNavigationType)navigationType { if ([[[req URL] host] isEqualToString:@"debugger"]){ // do stuff with [[req URL] path] } }
也就是说,我有一个在UiWebView/javascript上很重的应用程序,我倾向于在Chrome中做大多数javascript开发(模拟iPhone环境中的必要)
我还没试过,但看看这个Weinre
看起来很有希望.