在Swift WKWebView中将完成处理程序中的html数据保存在变量中

时间:2018-05-20 05:10:48

标签: javascript html swift wkwebview wknavigationdelegate

我试图从网站上抓取数据,而我想要的数据是跨区标记。到目前为止,我所做的是:

var str: Any?
webView.evaluateJavaScript("innerDoc.getElementById(spanId).innerHTML", completionHandler: 
    { (html: Any?, error: Error?) in
       str = html

    })
print(str)

但是当我这样做时,我就是零。如果我用print(html)代替str = html,我会得到我想要的输出。

我在这里做错了什么?为什么我不能将该值存储在变量中?

1 个答案:

答案 0 :(得分:0)

评估JavaScript需要花费一些时间WKWebView。在这种情况下,print(str)语句很可能在评估JS脚本之前发生。尝试将其移到评估声明的完成处理程序中,看看它是否有效。