![](/img/trans.png)
[英]Saving html data in variable from completion handler in Swift WKWebView
[英]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.