在UIWebView中调试Javascript有哪些方法?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在UIWebView中调试Javascript有哪些方法?相关的知识,希望对你有一定的参考价值。
我试图找出为什么使用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]
。
而已 !
这个查询在谷歌上面,所以值得链接到remoteInspector hidden in iOS5 - 到目前为止调试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
看起来很有希望。
这是一个老问题。但我仍然愿意分享我的两分钱。
我一直在使用jsconsole.com进行远程调试。这很简单。只需包含一个脚本标记,并使用控制台日志通过打印进行调试。这也可以用于在真实设备上进行调试。
老问题,但我想我找到了最好的解决方案,在我的情况下你需要调试uiwebview,但我无法访问IOS应用程序,只有html内容,我不得不查看一些JS日志,我添加了以下代码加载轻型firebug JS并自动显示:
从JS调用它
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = 'https://getfirebug.com/firebug-lite-debug.js';
document.head.appendChild(script);
或者从html加载它
<script type="text/javascript" src="https://getfirebug.com/firebug-lite-debug.js"></script>
我得到了调试UIWebView或SFSafariViewController的绝佳方法。
我希望它会有所帮助。
第1步:在Mac上打开Safari VC(哈哈哈不要露面,如果我在你的Macbook中说,请按照我的步骤操作)
Step2:进入Safari偏好并单击Advance。您将在MacBook屏幕上获得此设置。
现在启用菜单栏中的Show to develop菜单。现在你的所有工作都已完成。你在想我在开玩笑吗:P:P没人......
第3步:在设备或模拟器中运行您的应用程序。 (不要认为只是运行)并进入您打开Webview或SFSafariViewController的应用程序。直到现在你才明白我知道。很酷,看看我的下一步。
步骤4:在MacBook中打开Safari,然后从菜单栏中单击“开发选项”。你有没有得到你的MacBook,iPad / iPhone显示正确?????
第五步:完成。点击你的设备,然后点击URL新的弹出窗口就像这样。
Step6:你现在正在寻找它的所有步骤。
现在在此控制台上调试您的网页。在享受编码的同时享用您的一天,享用一杯茶或咖啡。
您可以设置一个类似PhoneGap中使用的系统,将消息从JavaScript发送到Objective-C并从那里进行记录。简而言之,他们使用自定义方案设置document.location并在委托回调中阻止该方案。
您可以利用UIWebView是WebView的大多数委托这一事实。 WebKit在技术上没有用于iPhone的文档,但大多数与桌面WebKit头文件中指定的相同,可能包括WebScriptObject。我使用它进行调试,但在提交给Apple之前一定要删除此代码。
要从UIWebView获取WebView,请在UIWebView的子类中实现类似-(void) webView:(id)inWebView didFinishLoadForFrame:(id)inWebFrame
的委托方法。如果您使用那个,请拨打超级。
以上是关于在UIWebView中调试Javascript有哪些方法?的主要内容,如果未能解决你的问题,请参考以下文章
Facebook Javascript 在本机 ios6 UIWebView 中登录(在 SAFARI 上工作)
如何调试iOS App中UIWebView和WKWebView使用的HTML文件