我有HTML页面和Swift项目,我想将变量值传递给html
像 在abc.swift中
var name =" someName"
的index.html
想要在p标记中显示someName
如果任何人有客观的C代码,它对我也有帮助
答案 0 :(得分:3)
如果你的HTML文件在UIWebView中加载,你可以使用JS和webView的stringByEvaluatingJavaScriptFromString方法来实现。这个方法允许通过JS在HTML和本机代码之间进行通信,例如
let param = "MyParam"
webView.stringByEvaluatingJavaScriptFromString("myJSFunction('\(param)')")
答案 1 :(得分:0)
迅速4:
不推荐使用WebView。您必须改为使用WKWebView来显示您的内容。您还需要实现WKNavigationDelegate。
在vc中为您的webView创建参考/插座。在您的viewDidLoad中,使您的vc是WKNavigationDelegate协议的委托:
var wkwebView: WKWebView
wkwebView.navigationDelegate = self //in viewDidLoad
假设您的html文件位于项目中。将您的html加载到wkWebView中:
do{
guard let filePath = Bundle.main.path(forResource: "yourFile", ofType: "html") else { return }
let contents = try String(contentsOfFile: filePath, encoding: .utf8)
let baseUrl = URL(fileURLWithPath: filePath)
wkwebView.loadHTMLString(contents as String, baseURL: baseUrl)
} catch {
print("HTML File error")
}
实现WKNavigationDelegate方法并调用您的js函数,以传递您希望js处理的值:
func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
wkwebView.evaluateJavaScript("populate(\"hello world\")", completionHandler: nil)
}
现在在html正文中,您应该有一个函数,该函数将接收要处理的参数。
...
<p id="test"></p>
<script>
function populate(param) {
var myelement = document.getElementById("test");
myelement.innerHTML= param;
}
</script>
...
您传递的值现在应该显示在wkWebView中。希望这会有所帮助:)