我有用户使用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,则可以看到实际值。您必须在完成模块中完成任务。另外,完成块将在主线程中执行,因此您需要确保不阻塞主线程。