Answers:
如果您使用的是iOS> = 6,并且有山狮(10.8)或Safari> = 6,则可以:
Preferences -> Advanced
并确保“在菜单栏中显示开发菜单”已打开。Develop -> iPhone Simulator -> [your webview page]
。而已 !
Settings
> Safari
> Advanced
> Web Inspector
< -启用此
该查询排在Google的首位,因此值得链接到隐藏在iOS5中的remoteInspector-到目前为止,这是调试UIWebViews的最佳方法-仅在发送给Apple之前有条件地编译出来。
[NSClassFromString(@"WebView") performSelector:@selector(_enableRemoteInspector)];
切记在构建发行版时删除该呼叫!
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环境中的必要操作)
我得到了调试UIWebView或 SFSafariViewController的绝佳方法。
希望对您有所帮助。
第1步: 在Mac上打开Safari VC(哈哈哈,别露脸,如果我在Macbook中说,请按照我的步骤进行)
步骤2:转到Safari偏好设置,然后单击“高级”。您将在MacBook屏幕上获得此设置。
现在,在菜单栏中启用“显示以开发”菜单。现在,您的所有工作都已完成。您是否在想我在开玩笑:P:P没人...
步骤3:在“设备”或“模拟器”中运行您的应用程序。(不要认为只是运行)然后进入您要打开Webview或SFSafariViewController的应用程序。到现在为止您还不了解我所知道的。冷静点,看看我的下一步。
步骤4:在MacBook中打开Safari,然后从菜单栏中单击Develop Option。MacBook,iPad / iPhone的显示正确吗?
步骤5:完成。单击您的设备,然后单击URL。这样会弹出新弹出窗口。
步骤6:您现在在看什么,这里是所有步骤。
现在,在此控制台上调试网页。喝杯茶或咖啡进行编码时,要快乐并享受美好的一天。
我还没有尝试过,但是看看这个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>
您可以设置一个类似于PhoneGap中使用的系统,以将消息从JavaScript发送到Objective-C并从那里进行记录。简而言之,他们使用自定义方案设置document.location并在委托回调中阻止该方案。
您可以利用以下事实:UIWebView是WebView的大多数委托。WebKit在技术上没有针对iPhone的文档记录,但与桌面WebKit标头中指定的大部分相同,可能包括WebScriptObject。我使用它进行调试,但是在提交给Apple之前,请确保先删除此代码。
要从UIWebView获取WebView,请像-(void) webView:(id)inWebView didFinishLoadForFrame:(id)inWebFrame
在UIWebView的子类中一样实现委托方法。如果使用超级电话,请致电超级。