I need to change a function to evaluate JavaScript from UIWebView to WKWebView. I need to return result of evaluating in this function.
Now, I am calling:
Base on @mort3m's answer, here is a WKWebView extension working with Swift 5.
extension WKWebView {
func evaluate(script: String, completion: @escaping (Any?, Error?) -> Void) {
var finished = false
evaluateJavaScript(script, completionHandler: { (result, error) in
if error == nil {
if result != nil {
completion(result, nil)
}
} else {
completion(nil, error)
}
finished = true
})
while !finished {
RunLoop.current.run(mode: RunLoop.Mode(rawValue: "NSDefaultRunLoopMode"), before: NSDate.distantFuture)
}
}
}