Swift与JavaScript交互

作者: Bobby0322 | 来源:发表于2016-05-16 10:43 被阅读182次

    Swift版本WebViewJavascriptBridge—SwiftWebViewBridge

    For Swift

    Generate a bridge with associated webView and default handler to deal with messages from js

     public class func bridge(webView: UIWebView, defaultHandler handler: SWVBHandler?) -> SwiftWebViewBridge
    

    Generate a bridge with associated webView and default handler to deal with messages from js without specifying designated handler

            self.bridge = SwiftWebViewBridge.bridge(webView, defaultHandler: { data, responseCallback in
                
                print("Swift received message from JS: \(data)")
                
                // Actually, this responseCallback could be an empty closure when javascript has no callback, saving you from unwarping an optional parameter = )
                responseCallback("Swift already got your msg, thanks")
            })
    

    Register a handler for JavaScript calling

          self.bridge.registerHandlerForJS(handlerName: "printReceivedParmas", handler: { [unowned self] jsonData, responseCallback in
                
                // if you used self in any bridge handler/callback closure, remember to declare weak or unowned self, preventing from retaining cycle!
                // Because VC owned bridge, brige owned this closure, and this cloure captured self!
                self.printReceivedParmas(jsonData)
                
                responseCallback(["msg": "Swift has already finished its handler", "returnValue": [1, 2, 3]])
                })
    

    调用js方法

        private func printReceivedParmas(data: AnyObject) {
            
            print("Swift recieved data passed from JS: \(data)")
        }
    

    Sent data to JS simply

    self.bridge.sendDataToJS(["msg": "Hello JavaScript, My name is 小明", "gift": ["100CNY", "1000CNY", "10000CNY"]])
    

    相关文章

      网友评论

        本文标题:Swift与JavaScript交互

        本文链接:https://www.haomeiwen.com/subject/ewlbrttx.html