WKWebView evaluate JavaScript return value

后端 未结 6 1400
孤独总比滥情好
孤独总比滥情好 2020-12-04 09:33

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:



        
6条回答
  •  日久生厌
    2020-12-04 09:50

    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)
            }
        }
    }
    

提交回复
热议问题