在我通过 WkWebView 导航到的本地 HTML 页面上有一个远程 Javscript Assets 标签,它从未完成下载(在这两种情况下,iOS 设备未连接到互联网,或者设备的互联网速度太慢) .
不幸的是,WKWebView 永远不会中止尝试下载此 Assets ,也不会将其转移到我的 WKNavigationDelegate(即 -webView:didFailNavigation:withError:
或 -webView:didFinishNavigation: 既不是
被调用),所以用户会被一个空白的 HTML 页面困住,这个页面永远不会完全解析,也永远不会出错。
谢天谢地,在某些情况下,我通过 Safari 远程 iOS Javascript 调试器进行了调试,我注意到我们收到错误 加载资源失败:互联网连接似乎已离线
记录到控制台,但在其他情况下(例如飞行模式下的某些设备)WKWebView 似乎永远不会因此错误而超时或放弃,因此不会触发 WKNavigationDelegate 回调。
您可以通过将 iOS 8.2 模拟器与任何 WKWebView iOS 应用程序结合使用来自行重现此场景,导航到任何本地提供的 HTML 文件,然后添加具有任何远程 URL 的脚本标记,然后将您的互联网连接限制为“100%使用 Apple 的 Network Link Conditioner 丢失” .
通过对其 WKNavigationDelegate 的错误或成功回调强制 WkWebView 超时/返回的最佳方法是什么?
最佳答案
尝试:
- (void)webView:(WKWebView *)webView didFailProvisionalNavigation:(WKNavigation *)navigation withError:(NSError *)error
可以查看错误,一般都会报错代码-1009:
检查此列表:Error Codes
关于javascript - 当没有互联网访问时,WKWebView 不会完成/超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28971088/