首页 > 解决方案 > 为什么当我的网页在 WKWebView 中加载时没有加载 CSS 文件,直到我延迟请求

问题描述

我正在开发一个iOS应用程序,主要将我的网页加载到WKWebView.

到目前为止,在我开始面临一个 CSS 文件未加载的奇怪问题之前,一切都很好。

font-awesome.css文件未加载,通常在第一个页面调用时加载。据我所知,服务器端没有任何可能影响font-awesome.css文件加载的更改。

我通过在 iOS 应用程序代码中实现以下功能来拦截请求。但是对于第一个请求,我只是这样做,decisionHandler(.allow)因为我不希望对第一个请求进行任何拦截。

func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, 
       decisionHandler: @escaping (WKNavigationActionPolicy) -> Swift.Void) {

    // For the first request it will go as is
    decisionHandler(.allow)    
}

一旦第一页加载到文件上WKWebViewfont-awesome.css文件就没有加载,因此一些字体图标在页面上显示为正方形。

在这个问题上花了一些时间后,我尝试decisionHandler(.allow)按如下方式延迟调用,然后它开始加载font-awesome.css文件:

DispatchQueue.main.asyncAfter(deadline: .now() + 0.150) {
    // I just added a delay of 150 ms and it starts loading the css file.
    decisionHandler(.allow)
}

对我来说,目前很难弄清楚延迟和加载 css 文件之间的关系。

我需要就这种行为提出建议,为什么会发生这种情况,或者是否有其他原因导致这种情况发生,我只是通过延迟来解决问题。

更多更新:

  1. 我还有一个 Android 应用程序,它也在 WebView 中加载相同的网页,并且工作正常。

  2. 我通过发送请求和不延迟来检查 IIS 日志。随着延迟,我在 IIS 日志中清楚地看到它加载了很棒的字体,如下所示,但在没有延迟的情况下,我在 IIS 日志中看不到这个条目:

2020-11-23 13:44:36 10.100.2.72 获取 /Content/fonts/fontawesome-webfont.woff2 v=4.5.0 80 - 10.100.0.111 ....

标签: cssiosswiftfont-awesomewkwebview

解决方案


推荐阅读