如何将数据从WKWebView返回到JavaScript

tin*_*ans 5 javascript ios swift wkwebview wkwebviewconfiguration

我正在使用WebViews开发混合的Android和iOS应用程序。但是,我正在努力将数据从iOS应用返回到我的Javascript。

下面是我如何设置WebView以便从我的JavaScript函数接收数据。

private lazy var webViewConfiguration: WKWebViewConfiguration = {
    let configuration = WKWebViewConfiguration()
    configuration.userContentController.add(self, name: "loginController")
    return configuration
}()


extension ApplicationController: WKScriptMessageHandler {
func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) {
    if (message.name == "loginController"){
        print("\(message.body)")
    }
}
}
Run Code Online (Sandbox Code Playgroud)

这就是我将数据传递到应用程序的方式。

webkit.messageHandlers.loginController.postMessage("Hello from JavaScript");
Run Code Online (Sandbox Code Playgroud)

本质上,我想做的是能够将数据从应用程序接收回我的JavaScript并执行类似的操作...

var response = webkit.messageHandlers.loginController.postMessage("Hello from JavaScript");
Run Code Online (Sandbox Code Playgroud)

但是我不知道如何从应用程序中返回一些东西。我是Swift的新手。但是,对于Android开发人员而言,就像将返回类型添加到我的函数中一样简单,但这不适用于Swift。

小智 -1

使用WebView的evaluateJavaScript函数将JS代码注入到您的窗口中。

webView?.evaluateJavaScript("responseFromLoginController('Hello from Swift')")
Run Code Online (Sandbox Code Playgroud)