如何将Swift中的变量值传递给HTML?

时间:2015-03-26 10:51:59

标签: ios swift

我有HTML页面和Swift项目,我想将变量值传递给html

像 在abc.swift中

var name =" someName"

的index.html

想要在p标记中显示someName

如果任何人有客观的C代码,它对我也有帮助

2 个答案:

答案 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中。希望这会有所帮助:)