簡體   English   中英

快速評估javascript函數,在完成處理程序中獲取nil

[英]Evaluating javascript function from swift, getting nil in the completion handler

在我的iOS應用中,我正在WKWebView中加載一個URL,然后在一個本地iOS按鈕上單擊我正在調用一個javascript函數來執行。 我正在使用以下方法執行該功能。

let result = webView.evaluateJavaScript("saveUserTemplate()", completionHandler: {(response, error) in

            print(response as Any) 
            print(error as Any)

        })

現在,問題是,當完成處理程序被觸發時,我得到的響應和錯誤都為零。

請提出一些從Java腳本函數獲得響應的方法。

由於沒有在服務器端進行ajax調用,而javascript函數沒有等待ajax調用執行完成,因此我沒有從valuateJavaScript函數獲得響應。

使用wkWebview的腳本消息可以解決此問題。

我為webview創建了配置,並將contentController添加到了配置中。

let contentController = WKUserContentController()
contentController.add(self, name: "cardSaved")
let config = WKWebViewConfiguration()
config.userContentController = contentController

webView = WKWebView(frame: CGRect(x: 10 , y : 10, width : UIScreen.main.bounds.width - 20, height : view.bounds.height - 150), configuration : config)

該處理程序是從javascript函數觸發的,例如:

webkit.messageHandlers.cardSaved.postMessage("Card Saved Succesfully");

從javascript端觸發事件后,就會觸發我的委托方法:

//MARK: - WKScriptMessageHandler Methods

    func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage)
    {
        if message.name == "cardSaved" {
            print(message.body)
        }
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM