`WKNavigationDelegate` `didFail` 和 `didFailProvisionalNavigation` 有什么区别

Ago*_*iro 2 ios swift wkwebview

iOS WKWebViewWKNavigationDelegate有两种方法来处理失败的导航:

文档仅告诉我们,一种类型在导航过程中比另一种类型发生得更早。错误参数是通用的,因此没有帮助。didFailProvisionalNavigation据我所知,Brave 和 Firefox iOS 只能处理它们的源代码。

我的问题是:

  1. 两种类型的错误到底有什么区别?
  2. 是否有每个可能发生的错误的列表?
  3. 什么时候需要处理didFail浏览器似乎无法处理的情况?

小智 5

webView(_:didFailProvisionalNavigation:withError:)

此方法处理在到达 url 资源之前发生的错误。这些错误主要与连接、网址格式或使用不受支持的网址有关。

此处提供的错误代码可在 https://developer.apple.com/documentation/cfnetwork/cfnetworkerrors中找到

典型的例子是

kCFURLErrorTimedOut = -1001 // timed out
kCFURLErrorUnsupportedURL = -1002 // unsupported URL
kCFURLErrorCannotFindHost = -1003 // host can not be found
kCFURLErrorFileDoesNotExist = -1100 // file does not exist on the server
Run Code Online (Sandbox Code Playgroud)

webView(_:didFail:withError:)

此处报告加载资源时发生的错误。这些通常是由页面内容引起的错误,例如页面本身中解析器无法处理的无效代码。