evaluateJavaScript
を使用してこれを行う方法はありません。評価されたJavascriptが返されるとすぐにコールバックが呼び出されるからです。これは、非同期呼び出しが行われる前である可能性が最も高いです。
あなたに似た、あなたのSWIFTコード内でメッセージハンドラを登録する必要があります
...
let script = WKUserScript(source: javascriptString,
injectionTime: injectionTime,
forMainFrameOnly: true)
userContentController.addUserScript(script)
webView.configuration.userContentController.addScriptMessageHandler(self,
name: "didShowLoading")
次に、あなたのスウィフトコード内のデリゲートメソッドを定義することができます...最後に
func userContentController(userContentController: WKUserContentController,
didReceiveScriptMessage message: WKScriptMessage) {
if message.name == "didShowLoading" {
// do something
}
}
、あなたが投稿することができますあなたのjavascriptコードからのメッセージ...
var script = "$('.loading-gif').removeClass('hide', function() {"
+ " webkit.messageHandlers['didShowLoading'].postMessage('');"
+ "});"
webView.evaluateJavaScript(script)
'javascriptString'と' scrip t'(下のスニペットで)? – crewshin