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:
I just stumbled about the same problem and wrote a little Swift (3.0) WKWebView extension for it, thought I might share it:
extension WKWebView {
func evaluate(script: String, completion: (result: AnyObject?, error: NSError?) -> Void) {
var finished = false
evaluateJavaScript(script) { (result, error) in
if error == nil {
if result != nil {
completion(result: result, error: nil)
}
} else {
completion(result: nil, error: error)
}
finished = true
}
while !finished {
RunLoop.current().run(mode: .defaultRunLoopMode, before: Date.distantFuture)
}
}
}