从HTML字符串wkwebview加载脚本

时间:2017-04-12 12:34:15

标签: ios swift swift3 wkwebview

是否可以通过使用WKWebView loadHTMLString方法加载的html从Xcode项目加载脚本文件?

例如,如果我有一个名为DemoProject的项目,在根目录中使用名为script1.js和script2.js的javascript文件。然后我加载了一个试图引用这些文件的html字符串。那可能吗?如果是这样,我如何正确引用这些文件?

1 个答案:

答案 0 :(得分:1)

尝试将其作为用户脚本注入。 如果您的文件夹结构是这样的,请使用以下函数将其作为用户脚本加载

enter image description here

private func fetchScript() -> WKUserScript!{

    var jsScript = ""
    if let jsPath = Bundle.main.path(forResource: "hello", ofType: "js", inDirectory: "scripts"){
        do
        {
            jsScript = try String(contentsOfFile: jsPath, encoding: String.Encoding.utf8)
        }catch{

            print("Error")
        }
    }

    let wkAlertScript = WKUserScript(source: jsScript, injectionTime: .atDocumentEnd, forMainFrameOnly: true)
    return wkAlertScript
}

将其添加到控制器

func registerScriptsAndEvents() {

    let controller = self.wkWebView.configuration.userContentController
    // Load the entire script to the document
    controller.addUserScript(fetchScript())
}