微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在WKwebViewSWIFT中加载本地资源以及HTML字符串吗?

如何解决在WKwebViewSWIFT中加载本地资源以及HTML字符串吗?

我有一个html字符串(我从api响应中获得)。另外我在应用程序捆绑包上有一些js文件,css文件,图像和字体。

我需要在WKWebView中将这些文件和html字符串一起加载

the html string look like this

the app bundle look like this

 bundle folder expanted

My question similar to this :

预先感谢

解决方法

在将资源文件和文件夹添加到分发包中时,单击“使用文件夹引用”选项而不是“创建组”。

,

在下面创建这样的html

<!DOCTYPE html>
<html>
    <head>
        <meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no">
        <meta name="supported-color-schemes" content="light dark">
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <link rel="stylesheet" type="text/css" href="style.css">
    </head>
    
    <body>
        <div id="container">
            <div id="editor" contentEditable="true" placeholder="" class="placeholder"></div>
        </div>
        <script type="text/javascript" src="rich_editor.js"></script>
    </body>
</html>

将您的html和css文件加载到html中,我用过rich_editor.jsstyle.css

像这样将创建的html加载到webview

webView.loadFileURL(documentsUrl,allowingReadAccessTo: documentsUrl.deletingLastPathComponent())

使用下面的函数插入从API获得的HTML字符串

public func runJS(_ js: String,handler: ((String) -> Void)? = nil) {
        webView.evaluateJavaScript(js) {(result,error) in
            if let error = error {
                print("WKWebViewJavascriptBridge Error: \(String(describing: error)) - JS: \(js)")
                handler?("")
                return
            }
            
            guard let handler = handler else { return }
            if let resultBool = result as? Bool {
                handler(resultBool ? "true" : "false")
                return
            }
            if let resultInt = result as? Int {
                handler("\(resultInt)")
                return
            }
            if let resultStr = result as? String {
                handler(resultStr)
                return
            }
            handler("") // no result
        }
    }

调用此功能

runJS("RE.insertHTML('yourHtmlString')")

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。