很抱歉,如果这个问题已经被问过,但我能找到的所有答案都是复杂的解决方案。
我有一个viewController,即webView。我将WKWebView, 添加到 WebKit 库的视图中,并打开简单的 url。在我的 ViewController 内部,我有一个名为 的本机函数showAd。当用户按下用 javascript 实现的按钮时,它会显示 call 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)
}
}
}
Run Code Online (Sandbox Code Playgroud)
我的目标是简单地允许从 javascript 部分调用此函数。据我所知,如果我想在 swift 中调用 javascript 函数,我只需说:
webview.addJavascriptInterface('javascript: function_name();')
Run Code Online (Sandbox Code Playgroud)
然而,就我而言,我想以相反的顺序进行。在 Javascript 代码中调用 swift 函数。