我有用户使用WKWebView
登录网站,之后我想解析页面的HTML
。我对Swift
/ iOS Development
非常陌生(就像我一样学习东西)。我知道HTML标签的id
我试图抓住innerHTML
(id是“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帖子(Get HTML from WKWebview in Swift)中描述的方法。在一个中,完成处理程序有一个print语句,它实际上可以在打印HTML
时使用。但是,我并不真正理解完成处理程序,这是有道理的,因为我还没有真正有过Swift
的经验,但这也意味着我不知道如何根据自己的目的调整该帖子中的代码。我真的很感激,如果有人可以指导我朝着正确的方向,那么我可以将页面的HTML
存储为变量中的string
,我可以稍后进行变异。谢谢!
htmlString的值是“初始值”,因为块在print语句执行后执行!
如果在块中打印htmlString,则可以看到实际值。你必须在完成块内完成你的任务。此外,完成块将在主线程中执行,因此您需要确保不阻塞主线程。