webview 中的NSURLErrorDomain Code=-999

摘要:替换UIWebview为WKWebview时,遇到一个怪异的现象,webview的二级界面回到一级界面时,一级重新渲染时,会直接抛错;

分析问题:

因为,我们的app支持iOS8以上,考虑到UIWebview的内存使用要比WKWebview的高、加载速度慢,同时,对WKWebview的高达60fps的滚动刷新率以及内置手势充满了羡慕,所以脑袋一抽,撸起袖子直接替换掉原来的UIWebview;这个过程中出现了这个莫名其妙的问题(进入一个H5加载的界面,点击内容,跳转到另外一个H5界面,然后,点击H5的导航返回按钮,上重新加载上一个界面,直接告知加载失败)

加断点,打印出来的error信息是:

Error Domain=NSURLErrorDomain Code=-999 "(null)" UserInfo={NSErrorFailingURLKey=https://xxx.xx.xx/me.jsp, _WKRecoveryAttempterErrorKey=, NSErrorFailingURLStringKey=https://xxx.xx.xx/me.jsp}

然后,哥们Google了一圈没有找到合理的解释,于是去查看NSURLError中-999代表的是什么:

NSURLError  --  key-value
NSURLError  --  key-value

-999 就是 NSURLErrorCancelled,它代表请求被取消的意思  

问题原因:

出现NSURLErrorDomain Code=-999的根本原因是什么呢?其实就是因为webview在之前的请求还没有加载完成,下一个请求发起了,此时webview会取消掉之前的请求,因此会回调到失败这里。

因此,在处理Webview的加载失败的回调时,要注意拦截掉被取消的请求。

解决方案:

在失败的方法里:

WKNavigtionDelegate失败方法
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 一、WebView WebView就是一个内嵌浏览器控件,在iOS中主要有两种WebView:UIWebView和...
    iOS祎阅读 4,862评论 0 2
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 14,822评论 4 61
  • 前言 关于UIWebView的介绍,相信看过上文的小伙伴们,已经大概清楚了吧,如果有问题,欢迎提问。 本文是本系列...
    CoderLF阅读 13,005评论 2 12
  • iOS 的 Cookie 存取 https://juejin.im/entry/58d4c4cc44d904006...
    Farmers阅读 11,312评论 0 16
  • 最好的感情是随意,却又彼此在意; 是惬意,却又彼此珍惜。 各自独立,而心在一起; 各自呼吸,而爱不分离。 两个人在...
    79716449ac89阅读 2,865评论 0 0

友情链接更多精彩内容