要收听来自Swift的JavaScript CallBack,首先需要理解这是在什么样的环境下发生,通常这是在混合开发环境中,比如使用Swift进行iOS应用开发,同时需要调用JavaScript代码或者与Web页面交互。
JSExport
协议或者WKWebView的addScriptMessageHandler
方法,JavaScript代码可以调用Swift代码。假设你已经在iOS应用中集成了WKWebView,并且想要收听来自JavaScript的回调。以下是一个简单的示例:
import WebKit
class ViewController: UIViewController, WKScriptMessageHandler {
var webView: WKWebView!
override func viewDidLoad() {
super.viewDidLoad()
let contentController = WKUserContentController()
contentController.add(self, name: "nativeHandler")
let config = WKWebViewConfiguration()
config.userContentController = contentController
webView = WKWebView(frame: self.view.frame, configuration: config)
self.view.addSubview(webView)
if let url = URL(string: "https://your-web-page.com") {
let request = URLRequest(url: url)
webView.load(request)
}
}
// 实现WKScriptMessageHandler协议的方法
func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) {
if message.name == "nativeHandler", let body = message.body as? [String: Any] {
print("Received message from JavaScript: \(body)")
// 在这里处理来自JavaScript的消息
}
}
}
在你的Web页面中,你可以使用以下JavaScript代码来调用Swift:
window.webkit.messageHandlers.nativeHandler.postMessage({key: 'value'});
当这段JavaScript代码执行时,它会触发nativeHandler
消息处理器,并将一个包含{key: 'value'}
的对象作为参数传递给Swift代码。
WKWebView
已经加载完成,并且JavaScript代码在WKWebView
加载完成后执行。WKWebView
配置中正确注册了消息处理器。请注意,以上代码和信息是基于iOS平台的,如果你在其他平台上进行类似的操作,可能需要使用不同的API和方法。
领取专属 10元无门槛券
手把手带您无忧上云