didFailLoadWithError中的webVIew.request.URL:是先前的URL而不是失败的URL

Gru*_*kes 2 uiwebview ios

假设有一个网页A.html包含B.html的链接.

如果单击B.html,那么shouldStartLoadWithRequest中的request.URL将是B.html,因为它应该是.html.但是,如果加载该页面时出现问题(例如,假设它不存在),那么在didFailLoadWithError中:webView.request.URL的值不是B.html而是A.html.

因此,似乎不可能知道哪个页面加载失败,除非我缓存最后一页加载,但我原本希望webView.request.URL是B.html,因此这是一个缺陷吗?我没有看到它应该是什么的文档.

[iOS 6]

小智 7

我有同样的问题.如果其他人也这样做,则error.userInfo字典会起作用.

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

{

    if (error.domain == NSURLErrorDomain) {
        if (error.code == NSURLErrorCancelled) { //ignore this one, interrupted load
            return;
        }
}
}
//NSString *theURLString = [webView.request.URL absoluteString]; this won't work - it just returns the last successful url
NSString *theURLString = [error.userInfo objectForKey:@"NSErrorFailingURLStringKey"]; //this works
Run Code Online (Sandbox Code Playgroud)

doco说在iOS4中不推荐使用NSErrorFailingURLStringKey(仅提供向后兼容性),您应该使用NSURLErrorFailingURLStringErrorKey.

但是不返回NSURLErrorFailingURLStringErrorKey(不管我的UIWebView版本是什么).相反,NSErrorFailingURLKey是返回URL的另一个键,但我无法在任何地方的文档中找到它.