首页 > 解决方案 > WKWebview goBack 函数失败并出现 didFailNavigation 错误 kCFURLErrorCancelled

问题描述

我有一个WKWebView带有一些自定义导航按钮的实例,包括后退和前进。在导航到某些页面时,即使 webview 有一个要返回的 url(并且方法canGoBack()返回true),在按下返回时,前一页的加载也会失败并回调:

- (void)webView:(WKWebView *)webView didFailNavigation:(WKNavigation *)navigation withError:(NSError *)error

失败并显示错误代码:

kCFURLErrorCancelled

产生此错误的页面示例如下:

  1. 第 1 页:https ://www.skyscanner.net/news/corona-virus-information
  2. 第 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;
    }
}

实现decidePolicyForSO Answer Here获取的所有委托方法

感谢您的时间...

标签: iosiphonewkwebview

解决方案


推荐阅读