Сохранение HTML-данных в переменной из обработчика завершения в Swift WKWebView

Я пытаюсь собрать данные с веб-сайта, и данные, которые я хочу, находятся в теге span. Пока что я сделал:

var str: Any?
webView.evaluateJavaScript("innerDoc.getElementById(spanId).innerHTML", completionHandler: 
    { (html: Any?, error: Error?) in
       str = html

    })
print(str)

Но когда я делаю это, я просто получаю ноль. Если я поставлю print(html) на месте str = html Я получаю вывод, который хочу.

Что я здесь не так делаю? Почему я не могу сохранить это значение в переменной?

1 ответ

Оценка JavaScript занимает WKWebView некоторое время. В этом случае print(str) Оператор, скорее всего, имеет место до оценки сценария JS. Попробуйте переместить его в обработчик завершения вашего оператора оценки и посмотрите, работает ли он.

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