如何让 WKWebView.evaluateJavaScript 在函数调用中返回数据

2024-01-12

我正在研究一些 WKWebView 解析例程。我试图通过检查页面的 document.title 来验证我是否已正确导航到该页面。我编写了一个函数来完成这项工作,但我似乎不知道如何从函数返回 HTML 数据或在函数中进行评估并返回 BOOL。我知道我正在此处进行异步调用,但不确定如何等待该调用结束并从我的函数调用反馈响应。

这是我的功能:

func checkTitle (forWebView webView: WKWebView, title: String) -> String{


webView.evaluateJavaScript("document.title", completionHandler: { (innerHTML, error ) in
    let titleString = innerHTML as? String

    return (titleString)

})

这会引发编译器错误。我尝试在调用外部声明变量,然后分配并返回它,但它尝试在异步调用完成之前执行该变量。


您应该使用完成处理程序,如下所示:

func checkTitle (forWebView webView: WKWebView, title: String, completion: @escaping (_ titleString: String?) -> Void) {

   webView.evaluateJavaScript("document.title", completionHandler: { (innerHTML, error ) in

        // Logic here
        completion(innerHTML as? String)  
    })
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何让 WKWebView.evaluateJavaScript 在函数调用中返回数据 的相关文章

随机推荐