【问题标题】:Loading local css & js files into WKWebView将本地 css & js 文件加载到 WKWebView
【发布时间】:2016-04-08 10:05:19
【问题描述】:

在 Swift 2.1.1 和 Xcode 7.1 中
我的代码使用 WKWebView 并从本地文件加载 index.html,但无法加载 index.css 和其他 javascript 文件,如 head 标签所示。

我最好的猜测是baseURL不正确,如果是这样,我怎样才能正确设置baseURL?谢谢

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>

【问题讨论】:

    标签: swift2 wkwebview xcode7.1


    【解决方案1】:

    在阅读 here 关于文件 url 之后,我能够解决问题。

    这里是代码

    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
            }
        }
    }
    

    【讨论】:

    • 嗨,您能否准确描述一下您使用的路径而不是file:///&lt;yourFilePath&gt;/abc/?谢谢
    • baseUrl 以 'file://' 开头很重要,确切的 filePath 并不重要
    • Bundle.main.bundlePath (Swift 3)
    猜你喜欢
    • 2017-05-24
    • 2018-02-27
    • 2018-12-26
    • 1970-01-01
    • 2012-10-28
    • 1970-01-01
    • 2014-09-13
    • 2021-04-21
    • 2017-06-24
    相关资源
    最近更新 更多