2016-01-04 16 views
8

in Swift 2.1.1 & Xcode 7.1
Mein Code verwendet WKWebView und lädt index.html eine lokale Datei bildet aber index.css und andere Javascript-Dateien nicht geladen werden kann, wie im Kopf gezeigt Etikett.Laden lokale CSS & js Dateien in WKWebView

Meine beste Vermutung ist, dass die baseURL nicht korrekt ist, wenn ja, Wie kann ich die baseURL richtig einstellen?

Dank
import UIKit 
import WebKit 

class ViewController: UIViewController { 
@IBOutlet var containerView: UIView! = nil //allows the class to refrence WKWebView 
var webView: WKWebView? 

override func loadView() { 
    super.loadView() 

    self.webView = WKWebView() 
    self.view = self.webView! 
} 

override func viewDidLoad() { 
    super.viewDidLoad() 

    let HTMLDocumentPath = NSBundle.mainBundle().pathForResource("index", ofType: "html") 
    let HTMLString: NSString? 

    do { 
     HTMLString = try NSString(contentsOfFile: HTMLDocumentPath!, encoding: NSUTF8StringEncoding) 
     let baseUrl = NSURL.fileURLWithPath("") 
     webView!.loadHTMLString(HTMLString as! String, baseURL: baseUrl) 

    } catch { 
     HTMLString = nil 
    } 
} 

override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
} 

}

<head> 
 
     <meta charset="UTF-8"> 
 
     <title>RRR</title> 
 
     <link rel="stylesheet" href="jquery.mobile-1.4.5.css"/> 
 
     <link rel="stylesheet" href="index.css"/> 
 
     <script src="jquery-1.11.3.js"></script> 
 
     <script src="jquery.mobile-1.4.5.js"></script> 
 
     <meta name="viewport" content="width=device-width"/> 
 
    </head>

enter image description here

Antwort

6

Nach einem bisschen here über die Datei-URL zu lesen ich in der Lage war, das Problem zu lösen.

Hier ist der Code

import UIKit 
import WebKit 

class ViewController: UIViewController { 
@IBOutlet var containerView: UIView! = nil //allows the class to refrence WKWebView 
var webView: WKWebView? 

override func loadView() { 
    super.loadView() 

    self.webView = WKWebView() 
    self.view = self.webView! 
} 

override func viewDidLoad() { 
    super.viewDidLoad() 

    let baseUrl = NSURL(string: "file:///<yourFilePath>/abc/") 
    let path = NSBundle.mainBundle().pathForResource("abc/index", ofType: "html") 
    let HTMLString: NSString? 

    do { 
     HTMLString = try NSString(contentsOfFile: path!, encoding: NSUTF8StringEncoding) 
     webView!.loadHTMLString(HTMLString as! String, baseURL: baseUrl) 

    } catch { 
     HTMLString = nil 
    } 
} 

override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
} 
} 
+3

Hallo, können Sie bitte beschreiben Sie genau, welchen Weg Sie statt 'Datei verwendet: /// /abc /'? Danke –

+0

Es ist wichtig, dass Ihr baseUrl mit 'file: //' beginnt, der genaue Dateipfad ist nicht so wichtig –

+0

Bundle.main.bundlePath (Swift 3) –

Verwandte Themen