Захватите HTML из WKWebView с помощьюvaluJavascript, а затем сохраните его в переменной (используя Swift) - PullRequest
0 голосов
/ 02 сентября 2018

У меня есть пользователи, которые заходят на веб-сайт, используя WKWebView, после чего я хочу проанализировать HTML страницы. Я очень плохо знаком с Swift / iOS Development (просто изучаю вещи по мере продвижения). Я знаю id тега HTML, который я пытаюсь получить innerHTML из (идентификатор «dataGrid»), и хотел бы сохранить строку в переменной с именем htmlString. У меня есть следующий код:

var htmlString = "initial value"
webView.evaluateJavaScript("document.getElementById('dataGrid').innerHTML.toString()", 
    completionHandler: { (html: Any?, error: Error?) in htmlString = html as! String})
print(htmlString)

Очевидно, это не работает - последний оператор print просто печатает "начальное значение". Просто чтобы вы знали, я основываю свой код на методе, описанном в другом посте StackOverflow ( Получить HTML из WKWebview в Swift ). В одном из них обработчик завершения имеет оператор print, который фактически работает при печати HTML. Тем не менее, я не совсем понимаю обработчики завершения, что имеет смысл, учитывая, что у меня еще не было большого опыта работы с Swift, но это также означает, что я не знаю, как адаптировать код в этом посте для своих собственных целей , Я был бы очень признателен, если бы кто-то мог направить меня в правильном направлении, чтобы я мог сохранить HTML страницы как string в переменной, которую я смогу изменить позже. Спасибо!

1 Ответ

0 голосов
/ 02 сентября 2018

Значением htmlString является «начальное значение», поскольку блок выполняется после выполнения инструкции print!

Если вы напечатаете htmlString внутри блока, вы увидите фактическое значение. Вы должны выполнить свою задачу внутри блока завершения. Также блок завершения будет выполняться в главном потоке, поэтому вам нужно убедиться, что вы не заблокируете основной поток.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...