【问题标题】:How to Listen to JavaScript CallBack from Swift?如何从 Swift 监听 JavaScript 回调?
【发布时间】:2021-05-20 11:18:57
【问题描述】:

我正在我的 iOS 应用程序中的WKWebView 上实现 MPGS webView 付款 后端开发人员向我发送有关 myHandler 对象的 javascript 回调。

我应该收到带有许多成功或失败回调的处理程序或取消(当用户单击 web 视图中的取消按钮时触发),在 JS 中它看起来像这样:

window.webkit.MyHandler.postMessage('cancel');
window.MyHandler.cancelCallback();

我使用以下方法接收回调:

override func viewDidLoad() {
    super.viewDidLoad()
    let contentController = WKUserContentController()
    contentController.add(self, name: "MyHandler")
    let configuration = WKWebViewConfiguration()
    configuration.userContentController = contentController
    configuration.preferences = WKPreferences()
    configuration.preferences.javaScriptEnabled = true
    let url = URL(string: NetworkManager.mpgsBaseUrl + "/" + (MPGSWebView.url ?? ""))!
    let urlRequest = URLRequest(url: url)
    wkWebView = WKWebView(frame: .zero,configuration: configuration)
    wkWebView.navigationDelegate = self
    wkWebView.uiDelegate = self
    wkWebView.load(urlRequest)
    delegate = self.checkOutViewController
    view = wkWebView
}

WKWebview 已加载,但当我完成或取消未执行的 WKScriptMessageHandler 委托中的 webview 打印语句时,我没有收到任何事件:

func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) {
    print(message.name,"fff",message)
}

如果有人知道如何接收这些事件,我将不胜感激。最好的问候

【问题讨论】:

    标签: javascript ios swift wkwebview


    【解决方案1】:

    你可以试试(缺少.messageHandlers.

    window.webkit.messageHandlers.MyHandler.postMessage("cancel");
    

    【讨论】:

    • 感谢您的支持...最好的问候
    猜你喜欢
    • 2014-11-18
    • 2019-12-07
    • 2014-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多