从 HTML 字符串 wkwebview 加载脚本

Posted

技术标签:

【中文标题】从 HTML 字符串 wkwebview 加载脚本【英文标题】:Loading scripts from HTML string wkwebview 【发布时间】:2017-04-12 12:34:15 【问题描述】:

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

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

【问题讨论】:

试试这个 找到了,没找到。 HTML 文件和脚本是否在同一个目标中? 没有html文件,我将一个包含html的字符串加载到wkwebview中。该字符串包含 。这些文件位于项目的根目录中。 如何将文件内容转换为字符串,然后用 webView.stringByEvaluatingJavascript 注入?我不记得函数的确切名称,但你可以检查一下。希望对你有帮助 【参考方案1】:

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

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())

【讨论】:

你可以查看这个项目github.com/anoop4real/WKWebViewExperiments我尝试了很多东西 @anoop4real,hello.js文件应该通过start.html文件调用。

以上是关于从 HTML 字符串 wkwebview 加载脚本的主要内容,如果未能解决你的问题,请参考以下文章

从 HTML 将图像加载到 UITextview/WKWebView

如何检查 WKWebView 是不是已加载 HTML 字符串

无法将文本从 WKWebview 复制到剪贴板

WKWebView 从文档目录加载 html 在设备上不起作用

WKWebView 是不是支持加载外部 javascript 文件?

如何从 WKWebView 加载本地化的 html 文件?