Как передать значение переменной в 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)')")
Другие вопросы по тегам