检测UIWebView何时无法加载引用的文件

时间:2013-05-09 01:45:55

标签: ios uiwebview

我正在使用一个广泛使用UIWebViews来显示从网络加载的内容的应用。大多数时候这种方法效果很好,但每隔一段时间(特别是在3G上)连接问题就会中断加载。

当它是主要的webview时,这不是问题,因为在委托上调用webView:didFailLoadWithError:。但是,页面HTML包含一些引用其他Web资源的标记和标记,偶尔会有初始请求通过,但其中一个后续请求将失败。

似乎我应该能够使用NSURLProtocol子类触发对这些失败的处理,但是在initWithRequest:cachedResponse:client:中,我找不到一种方法来确定哪个UIWebView触发了请求(所以我可以通知其代表向用户显示内容)。当触发其中一个请求时,我也找不到被调用的委托方法(webView:shouldStartLoadWithRequest:navigationType:仅调用window.location.href赋值和类似的主文档请求,而不是辅助请求)。检测其中一个辅助请求失败的最简单方法是什么(以及它正在尝试加载哪个URL以及哪个UIWebView正在创建它)?

1 个答案:

答案 0 :(得分:0)

我也遇到类似的问题,间歇性地无法显示.css和.js网址的缓存html引用。

事实证明,我的问题是CachePolicy设置为"忽略缓存"对于参考项目,从而使我的" canUseProtocol"委托逻辑。

我的解决方案是在离线时在我的缓存协议子类中为canUseProtocol返回YES,然后在网络只能到达时检查缓存策略。

在你的情况下,我认为你至少可以验证canUseProtocol方法中的urls加载,即使你失败也不会得到它们的回调。也许您可以使用自己的自定义协议,避免默认下载资产,然后使用自己的回调单独下载,以便成功将其注入webview?

希望这有帮助!