Как скоро вы сможете передать переменную в webView из Swift
Можно вызвать некоторый javascript в webView из Swift, используя оценку, помещенную в метод делегата навигации didFinish, как описано во втором ответе здесь.
Однако я хотел бы использовать переменную из Swift в качестве параметра, чтобы помочь загрузить правильный контент для веб-страницы. Есть ли способ передать переменную веб-просмотру раньше в жизненном цикле, чем после полной загрузки страницы? Я не могу передать параметр в URL-адресе, так как содержимое загружается с помощью javascript на основе параметра. Я попытался просто поместить его в viewDidLoad, но это не сработало, поскольку javascript еще нет. Очевидно, что вы не можете запускать какой-либо javascript, пока не будет javascript, но вам буквально нужно подождать пару секунд, прежде чем сработает didFinishNavigation.
Код, вызывающий метод Javascript после загрузки страницы
//make sure view controller adopts delegate protocol
var wkwebView: WKWebView
//viewDidLoad
wkwebView.navigationDelegate = self
func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
wkwebView.evaluateJavaScript("populate(\"hello world\")", completionHandler: nil)
}
in wkWebView file
<p id="test"></p>
<script>
function populate(param) {
var myelement = document.getElementById("test");
myelement.innerHTML= param;
}
</script>
Спасибо за любые предложения.