Как передать значение переменной в SWIFT в HTML?
У меня есть HTML-страница и проект SWIFT, я хочу передать значение переменной в HTML
как в abc.swift
var name = "someName"
index.html
хочу показать someName в теге p
если у кого-то есть код объективной C, это также будет полезно для меня
1 ответ
В swift4:
WebView устарел. Вместо этого вам придется использовать WKWebView для отображения вашего контента. Вам также необходимо реализовать WKNavigationDelegate.
Создайте ссылку / выход для вашего webView в вашем vc. В вашем 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. Надеюсь это поможет:)
Если ваш HTML-файл загружен в UIWebView, вы можете сделать это с помощью метода JS и stringByEvaluatingJavaScriptFromString в webView. этот метод позволяет связь между HTML и кодом Natif через JS, ниже пример
let param = "MyParam"
webView.stringByEvaluatingJavaScriptFromString("myJSFunction('\(param)')")