在 WKwebView (SWIFT) 中加载本地资源以及 HTML 字符串?
Load local resources along with HTML string in WKwebView (SWIFT)?
我有一个 html 字符串(我从 api 响应中得到)。我在应用程序包中还有一些 js 文件、css 文件、图像和字体。
我需要在 WKWebView
中加载这些文件以及 html 字符串
the html string look like this
the app bundle look like 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中加载你的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')")
在将资源文件和文件夹添加到包中时,单击“使用文件夹引用”选项而不是“创建组”。
我有一个 html 字符串(我从 api 响应中得到)。我在应用程序包中还有一些 js 文件、css 文件、图像和字体。
我需要在 WKWebView
中加载这些文件以及 html 字符串the html string look like this
the app bundle look like 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中加载你的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')")
在将资源文件和文件夹添加到包中时,单击“使用文件夹引用”选项而不是“创建组”。