ios - WKWebview goBack 函数失败并出现 didFailNavigation 错误 kCFURLErrorCancelled
问题描述
我有一个WKWebView
带有一些自定义导航按钮的实例,包括后退和前进。在导航到某些页面时,即使 webview 有一个要返回的 url(并且方法canGoBack()
返回true
),在按下返回时,前一页的加载也会失败并回调:
- (void)webView:(WKWebView *)webView didFailNavigation:(WKNavigation *)navigation withError:(NSError *)error
失败并显示错误代码:
kCFURLErrorCancelled
产生此错误的页面示例如下:
- 第 1 页:https ://www.skyscanner.net/news/corona-virus-information
- 第 2 页(选择上页链接): https ://www.gov.uk/foreign-travel-advice
不幸的是,我对用户可以浏览的页面内容没有太多控制权,因此我热衷于查看应用程序中的解决方案,而不是查看内容。此外,在 safari 中为上述示例页面向后/向前导航也可以正常工作。
对我有用的解决方案是:
- (void)webView:(WKWebView *)webView didFailNavigation:(WKNavigation *)navigation withError:(NSError *)error
{
if (error.code == kCFURLErrorCancelled) {
[_webView reload];
}
}
(...对不起,这是目标 C :-( )
我的问题是有没有人看到重新加载 web 视图以响应收到此didFailNavigation
错误的任何问题?或者有没有人有这方面的经验并有更好的解决方案?
我找到并尝试过的解决方案不起作用:
在从SO Question HerestopLoading
获取的返回导航之前添加调用:
func goBack() {
self.webView.stopLoading()
if (self.webView.canGoBack) {
self.webView.goBack()
return;
}
}
实现decidePolicyFor
从SO Answer Here获取的所有委托方法
感谢您的时间...
解决方案
推荐阅读
- asp.net-mvc - ASP.NET MVC 使用编辑器模板创建对象
- google-cloud-platform - 谷歌物联网与 Xively api 可用性
- c# - 使用 MongoDB 和 C# 新驱动程序版本 (2.0) 更新嵌入式文档属性
- html - 如果使用输入组,使用 Bootstrap4 表单是否需要标签
- vba - VBA Shape.Fill.UserPicture 不加载图片
- typescript - 在 Flow 中导入 TypeScript 模块
- javascript - 应用 laravel 的 spatie/CSP 后,owl carousel list 不会显示
- java - 需要根据行对列进行排序
- javascript - 如何从 Javascript 中获取 File 对象
- java - Android:如何分别绘制 .svg 文件的元素?