如何触发WKWebView的WKNavigationDelegate中webView:didFail:withError方法?
如何触发WKWebView的
webView(_:didFail:withError:)方法 首先明确两个错误回调的核心差异:
webView(_:didFailProvisionalNavigation:withError:):导航尚未完成启动时触发错误(比如无效URL、DNS解析失败、证书不被信任),这是你用无效URL测试时触发的场景。webView(_:didFail:withError:):导航已经启动,页面加载过程中出现错误时触发。
触发该方法的具体场景:
- 加载有效URL中途断网:先让WebView开始加载一个可正常访问的URL(比如
https://example.com),在页面开始加载但尚未完成时,断开设备的网络连接。此时WebKit因无法继续获取资源,会触发didFail回调。 - 加载存在但无法解析的本地文件:用
webView.loadFileURL()加载后缀为.html但内容是完全无法被WebKit解析的二进制文件,或者加载权限受限的文件(无读取权限),且文件已被部分读取后出错。 - 服务器返回无效内容:搭建测试服务器,返回200状态码但内容是损坏的HTML/二进制数据(比如截断的图片、乱码文本),WebKit尝试解析这些内容时会触发
didFail。
你的之前尝试未生效的原因:
- 无效URL属于导航启动前的错误,直接被拦截在
didFailProvisionalNavigation阶段。 - WebKit对HTML有极强的容错性,即使格式错误,也会自动修复并渲染,不会触发错误回调。
内容的提问来源于stack exchange,提问作者Nick
相关产品推荐
相关产品推荐

