在 WKwebView (SWIFT) 中加载本地资源以及 HTML 字符串?
Posted
技术标签:
【中文标题】在 WKwebView (SWIFT) 中加载本地资源以及 HTML 字符串?【英文标题】:Load local resources along with HTML string in WKwebView (SWIFT)? 【发布时间】:2020-08-13 10:06:02 【问题描述】:我有一个 html 字符串(我从一个 api 响应中得到)。我还有一些 js 文件、css 文件、图像和应用程序包上的字体。
我需要将这些文件与 WKWebView 中的 html 字符串一起加载
the html string look like this
the app bundle look like this
My question similar to this :
提前致谢
【问题讨论】:
【参考方案1】:在将资源文件和文件夹添加到包中时,单击“使用文件夹引用”选项而不是“创建组”。
【讨论】:
【参考方案2】:像这样在下面创建一个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中加载你的html和css文件,我用过rich_editor.js
和style.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')")
【讨论】:
我有多个css文件,如何加载多个css文件 是静态的还是动态的css文件? 那些是静态的,请检查问题中的图像。我更新了这个问题 加载我们已经为 style.css 导入的所有 css 文件 我找到了解决方案。不需要代码。在将资源文件和文件夹添加到捆绑包时单击 “使用文件夹引用” 选项而不是 “创建组”以上是关于在 WKwebView (SWIFT) 中加载本地资源以及 HTML 字符串?的主要内容,如果未能解决你的问题,请参考以下文章
来自html字符串的iOS Swift 4图像未在WKWebView中加载
在 WKWebView (iOS, Swift) 中使用本地 Javascript 源加载本地 HTML