【发布时间】:2018-09-02 01:44:35
【问题描述】:
我让用户使用WKWebView 登录网站,之后我想解析页面的HTML。我对Swift/iOS Development 非常陌生(只是边学习边学习)。我知道 HTML 标记的id 我正在尝试获取(id 为“dataGrid”)的innerHTML,并希望将字符串存储在名为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) 中描述的方法。在一个中,完成处理程序有一个打印语句,它实际上用于打印HTML。但是,我不太了解完成处理程序,考虑到我还没有太多使用 Swift 的经验,这是有道理的,但这也意味着我不知道如何根据自己的目的调整该帖子中的代码.如果有人能指引我正确的方向,我将不胜感激,这样我就可以将页面的HTML 存储为string 一个变量,以便以后进行变异。谢谢!
【问题讨论】:
-
您引用的代码对完成处理程序进行了打印调用。你为什么把它移出完成处理程序?询问是因为这正是导致您的代码无法按预期工作的原因。
-
我只是想在之后看看 htmlString 的值。我的最终目标是从 HTML 中提取信息。
-
然后将打印保存在完成处理程序中。并在那里添加处理。
标签: ios swift parsing wkwebview completionhandler