Iphone 如何查看UIWebView loadHTMLString:中的错误?

Iphone 如何查看UIWebView loadHTMLString:中的错误?,iphone,uiwebview,Iphone,Uiwebview,如果Apple在loadHTMLString过程中遇到错误,他们会将它们抛出到一个单独的线程中,没有stacktrace(在Xcode4中),也没有输出到控制台 您如何倾听这些错误,调试它们,并最终对它们作出反应 (仅供参考-我使用loadHTMLString是因为我需要混合加载本地和远程资源,而这种方法提供了唯一简单的方法,AFAIAA) 编辑:…抱歉,需要澄清的是:苹果可能会遇到不同的错误。例如,如果它在尝试加载嵌入式资源(例如CSS文件)时出错,它不会将其视为“页面加载失败”,事实上它会报

如果Apple在loadHTMLString过程中遇到错误,他们会将它们抛出到一个单独的线程中,没有stacktrace(在Xcode4中),也没有输出到控制台

您如何倾听这些错误,调试它们,并最终对它们作出反应

(仅供参考-我使用loadHTMLString是因为我需要混合加载本地和远程资源,而这种方法提供了唯一简单的方法,AFAIAA)

编辑:…抱歉,需要澄清的是:苹果可能会遇到不同的错误。例如,如果它在尝试加载嵌入式资源(例如CSS文件)时出错,它不会将其视为“页面加载失败”,事实上它会报告页面加载成功


我想。。。这是正确的行为:如果HTML解析器能够从错误中恢复,我不希望“页面加载失败”。但是错误仍然很重要-它们告诉我们页面呈现的原因,例如没有背景图像,或者图像已损坏。

尽管我没有使用
loadHTMLString:
,您应该能够将控制器注册为
UIWebViewDelegate
,并实现
–webView:didFailLoadWithError:
方法,该方法应在失败时调用。

为您的webView分配一个委托,并在委托中使用此方法

 - (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error
  {

       NSLog(@"Error is %@",error);

  }

出于调试目的,您可以附加Safari Web Inspector。为此:

  • 请确保安装了支持SWI的Safari版本,以便在Mac OS X 10.7.4上至少安装Safari 6
  • 在您用来测试应用程序的设备(或模拟器)上,启用设置>Safari>高级>Web Inspector
  • 发射狩猎
  • 启用Safari>首选项>高级>“在菜单栏中显示开发菜单”
  • 运行应用程序,当您使用的网络视图显示时,进入Safari>Develop>[设备名称或“iPhone模拟器”]>[网址-它将列在应用程序名称下]
  • 它将显示页面加载了哪些静态文件。(如果你想看到Javascript错误,你需要像平常一样附加,在所有异常上设置一个断点-在SWI中,而不仅仅是在Xcode中!-然后选择根级别的页面和CMD+R来重新加载它。)


    据我所知,以编程方式执行此操作的唯一方法(例如,如果要重试失败的页面加载)是使用NSURLProtocol子类。

    这不起作用。仅当整个网页加载失败时调用,而不是在加载过程中遇到非致命错误时调用。当网络/wifi不可用时,是否调用此委托方法?这不起作用。只有当整个网页无法加载时才会调用它,而不是在加载过程中遇到非致命错误时。哦,我看到了问题所在,我没有像我所说的那样使用loadHTMLString的太多经验,但我想不出使用公共API的其他方法:/yeah,这有点奇怪。我猜最好的方法是某种“全局异常处理程序”——但我以前在Ojb-c中没有这样做过(我只是猜测这是可能的?),正如最初的问题:我们通常需要“反应”它们。调试器本身没有什么用处:(.啊,我很害怕。在这种情况下,您必须编写一个NSURLProtocol子类来检测静态文件加载失败的时间:。我将在本周末用一个示例更新答案。而且,嗯,哇,我第一次回答时没有注意到这个问题的年龄…对此表示抱歉。:)