Loading local css & js files into WKWebView

笑着哭i 提交于 2021-02-06 10:57:18

问题


in Swift 2.1.1 & Xcode 7.1
My code uses WKWebView and loads index.html form a local file but fails to load index.css and other javascript files as shown in the head tag.

My best guess is that the baseURL is not correct, if so, How can I set the baseURL correctly? Thanks

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>


回答1:


After a bit of reading here about the file url I was able to solve the problem.

Here is the code

import UIKit
import WebKit

class ViewController: UIViewController {
    @IBOutlet var containerView: UIView! = nil  //allows the class to reference 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
        }
    }
}


来源:https://stackoverflow.com/questions/34597159/loading-local-css-js-files-into-wkwebview

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!