在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')")

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...