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

Ios 当UIWebView无法加载引用的文件时检测,ios,uiwebview,Ios,Uiwebview,我正在使用一个应用程序,它广泛使用UIWebView来显示从web加载的内容。大多数情况下,这种方法都很有效,但偶尔(特别是在3G上)会出现连接问题,从而中断加载 当它是主webview时,这不是问题,因为webview:didFailLoadWithError:在代理上被调用。但是,页面HTML包含一些引用其他web资源的和标记,并且非常偶然地,最初的请求将通过,但是这些后续请求中的一个将失败 似乎我应该能够使用NSURLProtocol子类触发对这些故障的处理,但在initWithReque

我正在使用一个应用程序,它广泛使用UIWebView来显示从web加载的内容。大多数情况下,这种方法都很有效,但偶尔(特别是在3G上)会出现连接问题,从而中断加载

当它是主webview时,这不是问题,因为webview:didFailLoadWithError:在代理上被调用。但是,页面HTML包含一些引用其他web资源的和标记,并且非常偶然地,最初的请求将通过,但是这些后续请求中的一个将失败


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

我也遇到了类似的问题,即间歇性地无法显示对.css和.js URL的缓存html引用

事实证明,我的问题是引用项的CachePolicy设置为“忽略缓存”,从而使我的“canUseProtocol”委托逻辑无效

我的解决方案是在脱机时在缓存协议子类中为canUseProtocol返回YES,然后在只能访问网络时检查缓存策略

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


希望这有帮助

没有答案的相关问题:我们有同样的问题。我们的HTML(图像等)中有从AmazonS3提取的内容,有时它们不会加载。我们需要能够检测何时发生这种情况。