在 Swift WKWebView 中的完成处理程序中将 html 数据保存在变量中
Posted
技术标签:
【中文标题】在 Swift WKWebView 中的完成处理程序中将 html 数据保存在变量中【英文标题】:Saving html data in variable from completion handler in Swift WKWebView 【发布时间】:2018-05-20 05:10:48 【问题描述】:我正在尝试从网站上抓取数据,而我想要的数据位于 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 脚本之前。尝试将它移动到评估语句的完成处理程序中,看看它是否有效。
【讨论】:
以上是关于在 Swift WKWebView 中的完成处理程序中将 html 数据保存在变量中的主要内容,如果未能解决你的问题,请参考以下文章
WKWebview 导航响应方法在单击 webview 中的完成按钮时不会被调用
从 swift 评估 javascript 函数,在完成处理程序中得到 nil
如何在swift 4中从WKWebView中的网页中删除DIV标签?
使用 Javascript 处理 HTML 和 Swift 之间的交互
关于在 Swift 中删除 WKWebView 中的 UIMenuController 默认 menuItems 的问题