Как скоро вы сможете передать переменную в 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>

Спасибо за любые предложения.

0 ответов

Другие вопросы по тегам