dep*_*ner 17 javascript timeout ios wkwebview
我正在通过WkWebView导航到的本地HTML页面上有一个远程Javscript资产标签,它永远不会完成下载(在iOS设备未连接到互联网或设备的互联网速度太慢的情况下).
不幸的是,WKWebView永远不会中止尝试下载这个资产,也不会转移到我的WKNavigationDelegate(即既-webView:didFailNavigation:withError:
不会也不会-webView:didFinishNavigation: neither
被调用),因此用户会遇到一个空白的HTML页面,该页面永远无法完全解析并且永远不会出错.
值得庆幸的是,在某些情况下,我通过Safari远程iOS Javascript调试器进行了调试,我注意到我们将错误Failed to load resource: The Internet connection appears to be offline
记录到控制台,但在其他情况下(如飞机模式中的某些设备),WKWebView似乎永远不会因此错误或放弃,所以没有WKNavigationDelegate回调被解雇.
您可以通过将iOS 8.2模拟器与任何WKWebView iOS应用程序一起使用来重现此场景,导航到任何本地提供的HTML文件,然后使用任何远程URL添加脚本标记,然后使用任何远程URL将您的Internet连接限制为"100%丢失" Apple的网络链接调节器.
什么是强制WkWebView通过错误或成功回调到其WKNavigationDelegate超时/返回的最佳方法?
Gab*_*ana 21
尝试:
WKNavigationDelegate
- (void)webView:(WKWebView *)webView didFailProvisionalNavigation:(WKNavigation *)navigation withError:(NSError *)error
Run Code Online (Sandbox Code Playgroud)
你可以检查错误,通常你会有一个error.code -1009:
检查此列表:错误代码
Ste*_*ntz -1
我认为您必须在 HTML 页面中执行此操作。您可以在其中包含一个小的 JavaScript,它运行计时器并检查您的远程脚本是否已加载。
如果尚未加载,则 JavaScript 可以直接在页面中显示错误或通过脚本消息处理程序通知您的应用程序。
(我不认为 HTML 有一个页面可以用来查找内容加载错误的 API。在验证外部脚本是否已加载上有一些关于此的提示)
归档时间: |
|
查看次数: |
9310 次 |
最近记录: |