javascript - 当没有互联网访问时,WKWebView 不会完成/超时

标签 javascript ios timeout wkwebview

在我通过 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 超时/返回的最佳方法是什么?

最佳答案

尝试:

WKNavigationDelegate

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

可以查看错误,一般都会报错代码-1009:

检查此列表:Error Codes

关于javascript - 当没有互联网访问时,WKWebView 不会完成/超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28971088/

相关文章:

ios - 由于关闭而导致对开始/结束外观转换的不平衡调用 - 不涉及任何转换或转场

PHP 在 46 秒后停止

即使使用 'autoReconnect=true' MySql JDBC 超时

javascript - 在javascript中合并两个用连字符连接的字符串

javascript - 轮播指示器不工作

javascript - jQuery Datepicker 中的日期格式

javascript - 使用 Mustache JS 进行 Ajax 分页?

ios - 在项目中包含子模块 .xcdatamodeld 文件

ios - 使用幻灯片刷新时表格单元格重复

python - 超时后恢复 FTP 下载