Muat file html lokal dari direktori dokumen aplikasi swift wkwebview

Saya mencoba memuat file html lokal yang diunduh ke aplikasi saya dengan wkwebview. Bersamaan dengan file html ini saya mengunduh dua file js, keduanya direferensikan di dalam file html.

Tapi apa pun yang saya lakukan, mereka tidak memuat di wkwebview

 @IBOutlet var webView: WKWebView!
    @IBOutlet var act: UIActivityIndicatorView!
    override func viewDidLoad() {
        super.viewDidLoad()
        // Adding webView content
        webView.uiDelegate = self
        webView.navigationDelegate = self


let fm = FileManager.default
    let docsurl = try! fm.url(for:.documentDirectory, in: .userDomainMask, appropriateFor: nil, create: false)
    let myurl = docsurl.appendingPathComponent("index.html")
    print("my url = ",myurl )
// myurl prints file///var/some directories/index.html
let request = URLRequest(url: myurl!)
            webView.load(request)
}

File html saya

<!DOCTYPE html>
 <html> 
<head>
<script src="jquery.min.js"></script>
<script>
$(document).ready(function(){
  $("button").click(function(){
    $("p").hide();
  });
});
</script>
</head>
<body>

<h2>This is a heading</h2>

<p>This is a paragraph.</p>
<p>This is another paragraph.</p>

<button>Click me</button>

</body>
</html>

Tapi itu tidak dimuat di layar dari safari (Develop/) saya dapat melihat bahwa An error occured trying to load the resource, halaman muncul tentang: kosong


person milsha    schedule 29.01.2019    source sumber
comment
Apa yang myurl cetak? Bagaimana Anda menggunakan WKWebView di sini?   -  person TheTiger    schedule 29.01.2019
comment
But it is not loading on the screen from safari(Develop/) Apa maksudnya? Safari adalah browser eksternal. Apakah yang Anda maksud dengan WebView saja dan bukan Safari?   -  person TheTiger    schedule 29.01.2019
comment
Tidak ada masalah dengan kode ini let request = URLRequest(url: myurl) self.webView.load(request). Anda perlu memeriksa apakah file ada di url yang sama dengan membuat objek Data dari url ini.   -  person TheTiger    schedule 29.01.2019
comment
@TheTiger, ya, ini berfungsi dengan baik di simulator saya, tetapi tidak berfungsi di iPhone (perangkat asli)   -  person milsha    schedule 29.01.2019
comment
Tingkat penerimaan Anda adalah 0. Anda belum menerima satu pun jawaban atas semua pertanyaan Anda. Ini tidak bagus.   -  person TheTiger    schedule 25.02.2019


Jawaban (2)


cepat 4.2

 //load HTML
let bundle = Bundle.main
var path = bundle.path(forResource: "index", ofType: "html")
var html = ""
do {
    try html = String(contentsOfFile: path!, encoding: .utf8)
} catch {
//ERROR
}
let urlstr = "http://website.com"
webViewWK.loadHTMLString(html, baseURL: URL(string: urlstr)!)
person AleyRobotics    schedule 29.01.2019

URLRequest pada dasarnya dibuat untuk url langsung. Untuk file sistem cukup muat URL. Anda perlu menggunakan metode di bawah ini dan itu akan berhasil:

/*! @abstract Navigates to the requested file URL on the filesystem.
     @param URL The file URL to which to navigate.
     @param readAccessURL The URL to allow read access to.
     @discussion If readAccessURL references a single file, only that file may be loaded by WebKit.
     If readAccessURL references a directory, files inside that file may be loaded by WebKit.
     @result A new navigation for the given file URL.
     */
    @available(iOS 9.0, *)
    open func loadFileURL(_ URL: URL, allowingReadAccessTo readAccessURL: URL) -> WKNavigation?

Sehingga:

self.webView.loadFileURL(myurl, allowingReadAccessTo: myurl)
person TheTiger    schedule 29.01.2019