WKWebView загружает HTML и Javascript, но не может загрузить CSS файлы - PullRequest
0 голосов
/ 06 февраля 2020

Я создал очень простое приложение WKWebView, используя XCode 11 и Swift 5.

Для этого я начал с приложения 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 ;
        }
    }
}

Затем я добавил View Controller в раскадровку и связал его с вышеуказанным файлом swift и установил его как контроллер основного представления.

Затем я добавил набор файлов в новую папку TM-MA C в структуре папок add со следующими файлами

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

Когда это приложение запускается окно, в котором WKWebView можно увидеть, а также проверить с помощью Safari.

Я обнаружил, что файлы html и js оба загружены, а файл css - нет. Я убежден, что в файле css нет ошибки, поскольку я использовал те же три файла в другом приложении XCode, написанном в Objective C.

Я обнаружил различные подобные отчеты в StackOverflow и одну вещь, которую я пробовал, что все еще не работает, чтобы изменить переменную, переданную в loadFileURL / allowReadAccessTo с URL-адреса на url.deletingLastPathComponent ()

1 Ответ

0 голосов
/ 07 февраля 2020

Ответ на этот вопрос - добавьте следующую строку кода, чтобы переопределить fun c loadView () перед созданием веб-представления.

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