如何在WKWebView中从Javascript向Swift传递数据?

9

我想将我的网站JavaScript中的数据传递给我使用Swift编写的应用程序。

JavaScript:

var messgeToPost = {
     "username": "testing123"
};
window.webkit.messageHandlers.loginSuccess.postMessage(messgeToPost);

Swift:

var webConfig:WKWebViewConfiguration {
    get {
        var webCfg:WKWebViewConfiguration = WKWebViewConfiguration()

        var userController:WKUserContentController = WKUserContentController()

        userController.addScriptMessageHandler(self, name: "loginSuccess")

        webCfg.userContentController = userController;

        return webCfg;
    }
}

override func viewDidLoad() {
     var userController:WKUserContentController = WKUserContentController()
     userController.addScriptMessageHandler(self, name: "loginSuccess")
     webView = WKWebView(frame: self.view.frame,
        configuration: webConfig)
     webView.loadRequest(NSURLRequest(URL: NSURL(string: URLPath)!))
}

func userContentController(userContentController: WKUserContentController, didReceiveScriptMessage message: WKScriptMessage) {
    if let messageBody:NSDictionary = message.body as? NSDictionary {
        let password:String = messageBody["password"] as! String

        print(password)
    }
}

很遗憾,print(password)从未被调用。

我错过了什么?


1
messageToPost 对象中没有 password 属性。 - soflare
1个回答

5
var messgeToPost = {
     "username": "testing123",
     "password": "password"
};

忘记添加密码


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接