簡體   English   中英

WKWebView 加載 HTML 和 Javascript 但無法加載 CSS 文件

[英]WKWebView loads HTML and Javascript but fails to load CSS files

我使用 XCode 11 和 Swift 5 構建了一個非常簡單的 WKWebView 應用程序。

為此,我從默認的 Hello World 應用程序開始,刪除了兩個核心 AppDelegate 方法中的所有代碼,並刪除了 ContentView.swift 文件。

然后我使用以下代碼添加了一個新的類文件 ViewController.swift

import Cocoa
import WebKit

class ViewController: NSViewController, WKUIDelegate 
{

var webView: WKWebView!
override func loadView()
    {
    let webConfiguration = WKWebViewConfiguration ()
    webView = WKWebView (frame: CGRect(x:0, y:0, width:800, height:600), configuration:webConfiguration);
    webView.uiDelegate = self ;
    view = webView;
    }

override func viewDidLoad()
    {
    super.viewDidLoad()

    if let url = Bundle.main.url ( forResource: "TeamMap"
                                 , withExtension: "html"
                                 , subdirectory: "TM-MAC")
        {
        self.webView.loadFileURL ( url
                                 , allowingReadAccessTo: url);
        self.view = webView ;
        }
    }
}

然后我將一個視圖控制器添加到故事板並將其鏈接到上面的 swift 文件並將其設置為主視圖控制器。

然后我將一組文件添加到添加文件夾結構中的新文件夾 TM-MAC 中,其中包含以下文件

TeamMap.html
TeamMap.js
TeamMap.css
plus several other javascript and image files.

當這個應用程序運行時,會出現一個窗口,在該窗口中可以看到 WKWebView,也可以使用 Safari 進行檢查。

我發現 html 和 js 文件都已加載,但 css 文件沒有。 我確信 css 文件中沒有錯誤,因為我在另一個用 Objective C 編寫的 XCode 應用程序中使用了相同的三個文件。

我在 StackOverflow 中發現了各種類似的報告,我嘗試過但仍然不起作用的一件事是將傳遞給 loadFileURL/allowingReadAccessTo 的變量從 url 更改為 url.deletingLastPathComponent()

對此的答案是添加以下代碼行以在創建 Web 視圖之前覆蓋 func loadView()。

webConfiguration.preferences.setValue(true, forKey: "allowFileAccessFromFileURLs");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM