无法在 SwiftUI XCode 预览中使用 webView.evaluateJavaScript("functionCall()") 在本地 HTML 文件中调用 JavaScript 函数
Unable to invoke JavaScript function in local HTML file with webView.evaluateJavaScript("functionCall()") in SwiftUI XCode preview
我想 运行 每秒对新数据进行一些 JavaScript 编码,我想将其从 iOS 端传输到 Web 视图端。
假设我想每秒更改一次 Web 视图背景的颜色。
我的代码看起来有点像这样:
HTML (htmlDocFileName):
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
</head>
<body style="background-color:#EDF2F7;">
<script>
function changeBackgroundColor(colorText) {
document.body.style.background = colorText;
}
</script>
</body>
</html>
Swift 视图:
import SwiftUI
struct View: View {
var body: some View {
RepresentedView()
}
}
Swift 表示视图:
import UIKit
import SwiftUI
import WebKit
struct RepresentedView: UIViewRepresentable {
typealias UIViewType = WKWebView
func makeUIView(context: Context) -> WKWebView {
let webView = WKWebView()
let url = url = Bundle.main.url(forResource: "htmlDocFileName", withExtension: "html")!
webView.loadFileURL(url, allowingReadAccessTo: url)
}
func updateUIView(_ uiView: WKWebView, context: Context) {
uiView.evaluateJavaScript("changeBackgroundColor('red')", completionHandler: nil)
}
}
当我运行代码呈现web视图,但是JavaScript函数没有执行。
我可以通过使用 WKUserScript 来评估 JavaScript,但是使用这种方法我无法 运行 JavaScript 函数不止一次,这正是我想要的要做。
我只在 Xcode 的预览模式下测试过,因为我无法测试 运行ning 应用程序容器。
预览有问题。 Xcode 中的预览无法 运行 提供给 evaluateJavaScript()
方法的 JavaScript。
以上代码应该可以在设备或模拟器上的 运行ning 应用程序中运行。
我想 运行 每秒对新数据进行一些 JavaScript 编码,我想将其从 iOS 端传输到 Web 视图端。
假设我想每秒更改一次 Web 视图背景的颜色。 我的代码看起来有点像这样:
HTML (htmlDocFileName):
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
</head>
<body style="background-color:#EDF2F7;">
<script>
function changeBackgroundColor(colorText) {
document.body.style.background = colorText;
}
</script>
</body>
</html>
Swift 视图:
import SwiftUI
struct View: View {
var body: some View {
RepresentedView()
}
}
Swift 表示视图:
import UIKit
import SwiftUI
import WebKit
struct RepresentedView: UIViewRepresentable {
typealias UIViewType = WKWebView
func makeUIView(context: Context) -> WKWebView {
let webView = WKWebView()
let url = url = Bundle.main.url(forResource: "htmlDocFileName", withExtension: "html")!
webView.loadFileURL(url, allowingReadAccessTo: url)
}
func updateUIView(_ uiView: WKWebView, context: Context) {
uiView.evaluateJavaScript("changeBackgroundColor('red')", completionHandler: nil)
}
}
当我运行代码呈现web视图,但是JavaScript函数没有执行。
我可以通过使用 WKUserScript 来评估 JavaScript,但是使用这种方法我无法 运行 JavaScript 函数不止一次,这正是我想要的要做。
我只在 Xcode 的预览模式下测试过,因为我无法测试 运行ning 应用程序容器。
预览有问题。 Xcode 中的预览无法 运行 提供给 evaluateJavaScript()
方法的 JavaScript。
以上代码应该可以在设备或模拟器上的 运行ning 应用程序中运行。