如何将数据从swift传递到javascript?

时间:2016-05-20 09:35:02

标签: javascript swift

我知道如何将数据从javascript传递到swift,但不知道如何将数据从swift传递到javascript。

我用来将数据从javascript传递到swift的方法如下:

<head>

    <title>Test</title>
    <meta charset="UTF-8">
</head>
<body>
    <h1>WebView Test 3</h1>
    <script>
        function callNativeApp () {
            try {
                webkit.messageHandlers.callbackHandler.postMessage("Here");
            } catch(err) {
                console.log('The native context does not exist yet');
            }
        }
    callNativeApp();
        </script>
</body>

import UIKit

import WebKit

class ThirdViewController: UIViewController,WKScriptMessageHandler{


    override func viewDidLoad() {

        super.viewDidLoad()

        let configuration=WKWebViewConfiguration()

        let controller=WKUserContentController()


        controller.addScriptMessageHandler(self, name: "callbackHandler")


        configuration.userContentController=controller

        let webView=WKWebView(frame: self.view.frame, configuration: configuration)

        let url=NSBundle.mainBundle().URLForResource("test3", withExtension: "html")

        let request=NSURLRequest(URL: url!)

        self.view=webView

        webView.loadRequest(request)
    }

    func userContentController(userContentController: WKUserContentController, didReceiveScriptMessage message: WKScriptMessage) {

        if(message.name == "callbackHandler"){
            print("callbackHandler: \(message.body)")
        }



    }


}

2 个答案:

答案 0 :(得分:3)

如您所知,您通过调用postMessage将信息传递给Swift。

要从Swift向浏览器传递信息,您只需按evaluateJavascript调用:

let num1 = 4
let num2 = 8

webView.evaluateJavaScript("addTwoNumbers(\(num1), \(num2);")  { (result, error) in
                guard error == nil else {
                    print("there was an error")
                    return
                }

                print(Int(result))
            }

要使这个特定代码执行任何操作,您需要在Javascript中使用addTwoNumbers函数来处理函数并完成某些操作。

答案 1 :(得分:0)

作为一个例子,我将采用这样的JS函数: -

      function send_message(val01, val02) {
           // you JS CODE
      }

然后运行你应该调用的函数: -

 self.webView.stringByEvaluatingJavaScriptFromString("send_message(\"\(self.value1)\", \"\(self.value2)\")")!