很抱歉,如果这个问题已经被提过了,但我能找到的所有答案都是复杂的解决方案。
我有一个视图控制器,它是webView。我从WebKit库中添加了WKWebView
到我的视图上,并打开了简单的url。在我的ViewController内部,我有一个本地函数叫做showAd
。
当用户按下在javascript中实现的按钮时,它将调用showRewardsAd
。我将断点设置为userContentController,但它从未到达那里。
func showAd(){
print("invoked")
}
extension WFWebViewController: WKScriptMessageHandler{
func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) {
if message.name == "showRewardsAd"{
self.showRewards()
webView.evaluateJavaScript("test", completionHandler: nil)
}
}
}
我的目标是允许javascript部分调用这个函数。据我所知,如果我想在Swift中调用javascript函数,我只需要这样说:
webview.addJavascriptInterface('javascript: function_name();')
然而,在我的情况下,我希望按相反的顺序执行。在 JavaScript 代码中调用 Swift 函数。