WKWebView evaluate JavaScript return value

后端 未结 6 1380
孤独总比滥情好
孤独总比滥情好 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:54

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

提交回复
热议问题